Message104924
| 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:59 | vstinner | set | recipients:
+ vstinner |
| 2010年05月04日 11:58:58 | vstinner | set | messageid: <1272974338.7.0.0380929022736.issue8610@psf.upfronthosting.co.za> |
| 2010年05月04日 11:58:56 | vstinner | link | issue8610 messages |
| 2010年05月04日 11:58:54 | vstinner | create |
|