[Python-Dev] Issue #8610: Set default file system encoding to ascii on error?

Antoine Pitrou solipsis at pitrou.net
Fri May 7 13:24:18 CEST 2010


Le Fri, 07 May 2010 13:05:52 +0200, Victor Stinner a écrit :
> 
> UTF-8 is not a good choice for the fallback because it's incompatible
> with other encodings like Latin1. I would like to fallback to ASCII on
> error which is compatible with all encodings (thanks to
> surrogateescape).

What do you mean with "compatible with all encodings thanks to 
surrogateescape"?

>>> "àéè".encode("ascii", "surrogateescape")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 
0-2: ordinal not in range(128)

> I would like to ensure that sys.getfilesystemencoding() result cannot be
> None, because Python 3.2 uses it on Unix to decode os.environb and to
> encode filenames in subprocess. I can implement a fallback for
> os.environb and subprocess (and other functions calling
> sys.getfilesystemencoding()), but I prefer to have a reliable
> sys.getfilesystemencoding() function.

Having a reliable sys.getfilesystemencoding() would be a good thing 
indeed.

> This change doesn't concern Windows and Mac OS X because the encoding is
> hardcoded (mbcs, utf-8). On Unix, I don't know in which case
> nl_langinfo() can fail. Empty environment is not an error:
> nl_langinfo(CODESET) returns "ascii". I think that few (or no) user
> would notice this change.

Ok, it sounds like a good compromise.

Regards

Antoine.



More information about the Python-Dev mailing list