#windows #encoding #conemu #cmder
#Windows #кодирование #conemu #cmder
Вопрос:
Я пытаюсь перенаправить вывод скрипта python в новый файл, используя инструмент Cmder / ConEmu в Windows 10. Выходные данные будут содержать символы, отличные от ascii, и мне нужно, чтобы кодировка нового файла была UTF-8
Упрощенный, мой скрипт выглядит следующим образом:
print('Bärlauch')
Затем я использую эту команду, чтобы перенаправить ее вывод в новый файл.
λ python example_script.py > new_file.txt
Если я затем проверю свойства файла, его кодировка будет iso-8859-1, Latin-1.
λ file -i new_file.txt
new_file.txt: text/plain; charset=iso-8859-1
Для дальнейшей обработки и практичности мне нужно, чтобы это был UTF-8. На данный момент я не нашел решения, и я искал довольно долгое время. Невозможно ли изменить кодировку, используемую оператором перенаправления?
РЕДАКТИРОВАТЬ: я установил кодовую страницу в UTF-8 перед запуском команды, которая создает новый файл, но кодировка остается Latin-1.
λ chcp 65001
Комментарии:
1. Просто проверяю — точно ли выходные данные скрипта python закодированы как UTF-8?
2. Да, это так. Перед печатью я декодирую из байтового потока с указанным utf8. Но разве это не имеет значения после того, как я распечатал его в стандартный вывод?
3. Я думаю, вы правы, если перенаправление не считается «безсимвольным устройством» стандартного вывода Windows : «… Для консольного устройства используется UTF-8. Несимвольные устройства, такие как дисковые файлы и каналы, используют кодировку системного языка (то есть кодовую страницу ANSI).»
4. Я рекомендую вам не использовать
write
, чтобы вы могли контролировать кодировку. Проблема с