Почему происходит следующее:
>>> u'\u0308'.encode('mbcs') #UMLAUT
'\xa8'
>>> u'\u041A'.encode('mbcs') #CYRILLIC CAPITAL LETTER KA
'?'
>>>
У меня есть приложение Python, принимающее имена файлов из операционной системы. Он работает для некоторых международных пользователей, но не для других.
Например, это имя файла Unicode: и '\ u041a\u0433\u044b\u044b\u0448\u0444\u0442'
не будет кодироваться с кодировкой Windows "mbcs" (той, которая используется файловой системой, возвращается sys.getfilesystemencoding()). Я получаю "???????", показывая, что кодер не работает на этих символах. Но это не имеет никакого смысла, поскольку имя файла пришло от пользователя для начала.
Обновление: вот фон по моим причинам... У меня есть файл в моей системе с именем на кириллице. Я хочу вызвать subprocess.Popen() с этим файлом в качестве аргумента. Popen не будет обрабатывать unicode. Обычно я могу уйти с кодировкой аргумента с кодеком, данным sys.getfilesystemencoding(). В этом случае он не будет работать