STINNER Victor <victor.stin...@haypocalc.com> added the comment: Le vendredi 07 mai 2010 11:19:52, vous avez écrit : > > Ok, you conviced me with your PYTHONFSENCODING suggestion (#8622). Can > > you review my last patch please? > > I don't think we can change the fallback encoding in 3.2. But you > can start a discussion on python-dev, of course.
Ok, I will ask on python-dev. > + fprintf(stderr, > + "Unable to get the locale encoding: " > + "fallback to utf-8\n"); > > This would have to read "... to ASCII" Fixed. > > + Py_FileSystemDefaultEncoding = "ascii"; > > + codec = _PyCodec_Lookup(Py_FileSystemDefaultEncoding); > + if (!codec) { > + Py_FatalError( > + "Py_Initialize: unable to load the file system codec"); > > It's better to use the same approach as above for this situation > as well. I choosed to display a fatal error here to give a more revelant error message to the user. Without the check, _PyCodec_Lookup() will fail anyway, but later in a random function :-/ The fatal error only occurs in critical situations: no more memory, import machinery completly broken (eg. #8611), etc. In this case, fallback to ASCII doesn't help, it will also raise somewhere later. About nl_langinfo(CODESET): get_codeset() does already reject unknown encoding. So this call is only done on known encoding names. > You also need to change this line in pythonrun.c: > > /* reset file system default encoding */ > if (!Py_HasFileSystemDefaultEncoding) { > free((char*)Py_FileSystemDefaultEncoding); > Py_FileSystemDefaultEncoding = NULL; > } Fixed. This test only match if get_codeset() is used: I choosed to set the encoding to ASCII with Py_HasFileSystemDefaultEncoding=0. > I'm not sure what the purpose of Py_HasFileSystemDefaultEncoding > is. Its name doesn't help. It's just a flag to tell if free() should be called or not... (see _Py_SetFileSystemEncoding()). > In any case, initfsencoding() would always have to set that > flag to 1. initfsencoding() is a static function and it's only called by Py_InitializeEx(). Can Py_InitializeEx() be called multiple times? ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8610> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com