[Bug 6364] Fix file-opening failures due to unicode content.

svn: r21147
This commit is contained in:
John Ralls 2013-01-17 19:47:44 +00:00
parent a58ef2b73f
commit cc4ec85b4d
2 changed files with 17 additions and 2 deletions

View File

@ -1093,9 +1093,21 @@ class PluginRegister(object):
if sys.version_info[0] < 3: if sys.version_info[0] < 3:
full_filename = full_filename.encode(glocale.getfilesystemencoding()) full_filename = full_filename.encode(glocale.getfilesystemencoding())
local_gettext = glocale.get_addon_translator(full_filename).gettext local_gettext = glocale.get_addon_translator(full_filename).gettext
try:
stream = open(full_filename).read()
except UnicodeError as err:
if sys.version_info[0] < 3:
print(_("ERROR: Failed to read file %s, %s") % (full_filename, str(err)))
continue
else:
try:
stream = open(full_filename, encoding = 'utf-8').read()
except ValueError as err:
print(_("ERROR: Failed to read file %s, %s") % (full_filename, str(err)))
continue
try: try:
#execfile(full_filename, #execfile(full_filename,
exec(compile(open(full_filename).read(), full_filename, 'exec'), exec(compile(stream, full_filename, 'exec'),
make_environment(_=local_gettext), make_environment(_=local_gettext),
{}) {})
except ValueError as msg: except ValueError as msg:

View File

@ -335,7 +335,10 @@ class ConfigManager(object):
except OSError as exp: except OSError as exp:
if exp.errno != errno.EEXIST: if exp.errno != errno.EEXIST:
raise raise
key_file = open(filename, "w") if sys.version_info[0] < 3:
key_file = open(filename, "w")
else:
key_file = open(filename, "w", encoding="utf-8")
key_file.write(";; Gramps key file\n") key_file.write(";; Gramps key file\n")
key_file.write((";; Automatically created at %s" % key_file.write((";; Automatically created at %s" %
time.strftime("%Y/%m/%d %H:%M:%S")) + "\n\n") time.strftime("%Y/%m/%d %H:%M:%S")) + "\n\n")