Моя проблема:
- Начните с US Windows 10 install
- Создайте японское имя файла в проводнике Windows
- Откройте оболочку Python и
os.listdir('.')
- В указанном имени файла полно вопросительных знаков.
os.path.exists()
неудивительно, что файл отчетов не найден.
NTFS сохраняет имя файла как Unicode,Я уверен, что если я воспользуюсь серией функций win32api CreateFile()
, я получу имя файла Unicode , однако эти API слишком громоздки (и не переносимы).Я бы предпочел, чтобы я получал utf-8 закодированные имена файлов или байты Unicode из структуры каталогов FS, но в режиме по умолчанию этого не происходит.
Я пыталсяиграя с setlocale()
, но я не наткнулся на правильные аргументы, чтобы заставить мою программу работать.Я не хочу (и не могу) устанавливать дополнительные кодовые страницы на компьютер с Windows.Это необходимо для стандартной установки Windows.
Обратите внимание, что это не имеет ничего общего с консолью.А repr () показывает, что?символы, которые заканчиваются в имени файла, указанном os.listdir('.')
, являются реальными вопросительными знаками, а не каким-либо артефактом отображения.Я предполагаю, что они были добавлены API, который listdir()
использует под капотом.