diff options
| author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-20 22:58:25 +0000 |
|---|---|---|
| committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-20 22:58:25 +0000 |
| commit | babdfda4277515a2333853d65291bf74678e52b4 (patch) | |
| tree | 88fa7ca24ba629b16df99bf49aa1c3eb2c99ad85 /Modules/python.c | |
| parent | 8664619dcbd1322adc449255407866edf91562fe (diff) | |
| download | cpython-babdfda4277515a2333853d65291bf74678e52b4.tar.gz | |
Issue #4388: On Mac OS X, decode command line arguments from UTF-8, instead of
the locale encoding. If the LANG (and LC_ALL and LC_CTYPE) environment variable
is not set, the locale encoding is ISO-8859-1, whereas most programs (including
Python) expect UTF-8. Python already uses UTF-8 for the filesystem encoding and
to encode command line arguments on this OS.
Diffstat (limited to 'Modules/python.c')
| -rw-r--r-- | Modules/python.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Modules/python.c b/Modules/python.c index 47685a419a..18f9b3dd66 100644 --- a/Modules/python.c +++ b/Modules/python.c @@ -15,6 +15,10 @@ wmain(int argc, wchar_t **argv) } #else +#ifdef __APPLE__ +extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size); +#endif + int main(int argc, char **argv) { @@ -41,7 +45,11 @@ main(int argc, char **argv) oldloc = strdup(setlocale(LC_ALL, NULL)); setlocale(LC_ALL, ""); for (i = 0; i < argc; i++) { +#ifdef __APPLE__ + argv_copy[i] = _Py_DecodeUTF8_surrogateescape(argv[i], strlen(argv[i])); +#else argv_copy[i] = _Py_char2wchar(argv[i], NULL); +#endif if (!argv_copy[i]) return 1; argv_copy2[i] = argv_copy[i]; |
