diff --git a/web/pgadmin/misc/file_manager/__init__.py b/web/pgadmin/misc/file_manager/__init__.py
index 78a24c24a..439eaa655 100644
--- a/web/pgadmin/misc/file_manager/__init__.py
+++ b/web/pgadmin/misc/file_manager/__init__.py
@@ -313,6 +313,9 @@ def save_show_hidden_file_option(trans_id):
 class Filemanager(object):
     """FileManager Class."""
 
+    # Stores list of dict for filename & its encoding
+    loaded_file_encoding_list = []
+
     def __init__(self, trans_id):
         self.trans_id = trans_id
         self.patherror = encode_json(
@@ -1089,6 +1092,10 @@ class Filemanager(object):
                 # Check if string is binary
                 is_binary = is_binary_string(file_data)
 
+            # Store encoding for future use
+            Filemanager.loaded_file_encoding_list.\
+                append({os.path.basename(filename): enc})
+
         except IOError as ex:
             status = False
             # we don't want to expose real path of file
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index 0ec573b0e..630a83141 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1253,10 +1253,20 @@ def save_file():
             file_path.lstrip('/').lstrip('\\')
         )
 
+    # Get value for encoding if file is already loaded to SQL editor
+    def get_file_encoding_of_loaded_file(file_name):
+        encoding = 'utf-8'
+        for ele in Filemanager.loaded_file_encoding_list:
+            if file_name in ele:
+                encoding = ele[file_name]
+        return encoding
+
+    enc = get_file_encoding_of_loaded_file(os.path.basename(file_path))
+
     if hasattr(str, 'decode'):
         file_content = file_data['file_content']
     else:
-        file_content = file_data['file_content'].encode()
+        file_content = file_data['file_content'].encode(enc)
 
     # write to file
     try:
