mirror of
https://github.com/python/cpython.git
synced 2025-07-15 23:35:23 +00:00
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.
This commit is contained in:
parent
073f759d65
commit
f933e1ab6f
4 changed files with 160 additions and 0 deletions
|
@ -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];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue