Hi,
PFA patch to fix the issue where if the database server is installed on the
windows system then in most cases the parameter 'lc_messages' has
environment dependent encoding.
RM#2806
RM#2821
--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/utils/driver/psycopg2/__init__.py
b/web/pgadmin/utils/driver/psycopg2/__init__.py
index 48a7c93..ece1d12 100644
--- a/web/pgadmin/utils/driver/psycopg2/__init__.py
+++ b/web/pgadmin/utils/driver/psycopg2/__init__.py
@@ -1589,11 +1589,29 @@ Failed to reset the connection to the server due to
following error:
Returns:
Decoded string
"""
+ is_error = False
if hasattr(str, 'decode'):
try:
value = value.decode('utf-8')
+ except UnicodeDecodeError:
+ # Let's try with python's preferred encoding
+ # On Windows lc_messages mostly has environment dependent
+ # encoding like 'French_France.1252'
+ try:
+ import locale
+ pref_encoding = locale.getpreferredencoding()
+ value = value.decode(pref_encoding)\
+ .encode('utf-8')\
+ .decode('utf-8')
+ except:
+ is_error = True
except:
- pass
+ is_error = True
+
+ # If still not able to decode then
+ if is_error:
+ value = value.decode('ascii', 'ignore')
+
return value
def _formatted_exception_msg(self, exception_obj, formatted_msg):