Принудительно использовать UTF-8 во время записи в файл - PullRequest
1 голос
/ 18 марта 2020

Как применить кодировку UTF-8 при записи строки в файл в Python? Мне нужно это в большем наборе инструментов, но я не могу запустить его надежно. Следуя другим, неудачным подходам из Stack Overflow, вот MWE, который мне уже не удался:

import codecs

f1 = codecs.open("/tmp/works.utf8", "w", encoding="utf-8")
f1.write("ä")
f1.close()

f2 = codecs.open("/tmp/fails.utf8", "w", encoding="utf-8")
f2.write("a")
f2.close()

Тестирование на консоли:

$ file -i works.utf8 
works.utf8: text/plain; charset=utf-8

$ file -i fails.utf8 
fails.utf8: application/octet-stream; charset=binary

Чего мне не хватает?

1 Ответ

2 голосов
/ 18 марта 2020

На python 3 вы больше не используете кодеки для открытия файлов. В функции открытия есть новый параметр encoding:

https://docs.python.org/3/library/functions.html#open

О программе file. Это работает, угадывая содержание. Вам нужно было бы добавить спецификацию UTF-8, чтобы дать ей больше шансов распознать ее, так как это может быть также файл ascii (или двоичный файл, так как только один байт не говорит об этом много)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...