[r21146]GrampsLocale: Replace calls to sys.getfilesystemencoding

On MSWin and OSX, this call always returns the correct
value (utf-8 on OSX, 'mbcs' on MSWin), but on Linux the
return value is bizarrely dependent upon the environment.

Replace it with a GrampsLocale function which returns 'utf-8'
(the correct value for most Linux file systems) regardless of
the environment.

Also replace its use in print and write functions: It's the
encoding of paths in the filesystem, not of the files's content,
nor of the terminal's capabilities. The former is almost
always utf-8 as long as we write the file, the latter is
given by sys.stdout.encoding. Use the 'backslashreplace' error
handler to avoid exceptions when we need to output unicode
text to an ASCII terminal.

svn: r21394
This commit is contained in:
John Ralls
2013-02-24 00:51:57 +00:00
parent 221c30976f
commit 8cea2e239a
16 changed files with 54 additions and 123 deletions

View File

@@ -1091,7 +1091,7 @@ class PluginRegister(object):
lenpd = len(self.__plugindata)
full_filename = os.path.join(dir, filename)
if sys.version_info[0] < 3:
full_filename = full_filename.encode(sys.getfilesystemencoding())
full_filename = full_filename.encode(glocale.getfilesystemencoding())
local_gettext = glocale.get_addon_translator(full_filename).gettext
try:
if win() and not sys.version_info[0] < 3:

View File

@@ -672,7 +672,7 @@ class GVPsDoc(GVDocBase):
# :cairo does not work with Graphviz 2.26.3 and later See issue 4164
# Covert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -720,7 +720,7 @@ class GVSvgDoc(GVDocBase):
dotfile.close()
# Covert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -763,7 +763,7 @@ class GVSvgzDoc(GVDocBase):
dotfile.close()
# Covert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -806,7 +806,7 @@ class GVPngDoc(GVDocBase):
dotfile.close()
# Covert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -849,7 +849,7 @@ class GVJpegDoc(GVDocBase):
dotfile.close()
# Covert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -892,7 +892,7 @@ class GVGifDoc(GVDocBase):
dotfile.close()
# Covert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -938,7 +938,7 @@ class GVPdfGvDoc(GVDocBase):
dotfile.close()
# Convert filename to str using file system encoding.
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
@@ -1003,7 +1003,7 @@ class GVPdfGsDoc(GVDocBase):
# Convert to PDF using ghostscript
if sys.version_info[0] < 3:
fname = self._filename.encode(sys.getfilesystemencoding())
fname = self._filename.encode(glocale.getfilesystemencoding())
else:
fname = self._filename
command = '%s -q -sDEVICE=pdfwrite -dNOPAUSE -dDEVICEWIDTHPOINTS=%d' \