Issue #16416: OS data are now always encoded/decoded to/from

UTF-8/surrogateescape, instead of the locale encoding (which may be ASCII if no
locale environment variable is set), to avoid inconsistencies with
os.fsencode() and os.fsdecode() functions which are already using
UTF-8/surrogateescape.
This commit is contained in:
Victor Stinner 2012-11-12 23:04:02 +01:00
parent 29824550b1
commit e262377cab
3 changed files with 51 additions and 10 deletions

View file

@ -15,10 +15,6 @@ 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)
{
@ -45,11 +41,7 @@ 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]) {
free(oldloc);
fprintf(stderr, "Fatal Python error: "