Merge pull request #23025 from jfindlay/fix_sys_locale

catch exceptions on bad system locales/encodings
This commit is contained in:
Thomas S Hatch 2015-04-25 10:56:29 -06:00
commit d25a5c102f

View file

@ -2493,10 +2493,21 @@ def get_encodings():
return a list of string encodings to try
'''
encodings = []
loc = locale.getdefaultlocale()[-1]
if loc:
encodings.append(loc)
encodings.append(sys.getdefaultencoding())
try:
loc_enc = locale.getdefaultlocale()[-1]
except (ValueError, IndexError): # system locale is nonstandard or malformed
loc_enc = None
if loc_enc:
encodings.append(loc_enc)
try:
enc = sys.getdefaultencoding()
except ValueError: # system encoding is nonstandard or malformed
enc = None
if enc:
encodings.append(enc)
encodings.extend(['utf-8', 'latin-1'])
return encodings