This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients vstinner
Date 2010-05-04.11:58:54
SpamBayes Score 0.010808344
Marked as misclassified No
Message-id <1272974338.7.0.0380929022736.issue8610@psf.upfronthosting.co.za>
In-reply-to
Content
On POSIX (but not on Mac OS X), Python3 calls get_codeset() to get the file system encoding. If this function fails, sys.getfilesystemencoding() returns None.  PyUnicode_DecodeFSDefaultAndSize() fallbacks to utf-8 whereas subprocess fail:

  ...
  File "/home/SHARE/SVN/py3k/Lib/subprocess.py", line 670, in __init__
    restore_signals, start_new_session)
  File "/home/SHARE/SVN/py3k/Lib/subprocess.py", line 1101, in _execute_child
    executable_list = (fs_encode(executable),)
  File "/home/SHARE/SVN/py3k/Lib/subprocess.py", line 1088, in fs_encode
    return s.encode(fs_encoding, 'surrogateescape')
TypeError: encode() argument 1 must be string, not None

We have two choices: raise a fatal error if get_codeset() failed, or fallback to utf-8.

On Windows and Mac OS X, get_codeset() shouldn't be called because the result is just dropped. We should call _PyCodec_Lookup(Py_FileSystemDefaultEncoding) instead to ensure that the file system encoding can be loaded.
History
Date User Action Args
2010-05-04 11:58:59vstinnersetrecipients: + vstinner
2010-05-04 11:58:58vstinnersetmessageid: <1272974338.7.0.0380929022736.issue8610@psf.upfronthosting.co.za>
2010-05-04 11:58:56vstinnerlinkissue8610 messages
2010-05-04 11:58:54vstinnercreate