Найти - Пользователи
Полная версия: Запись unicode строк в файл
Начало » Python для новичков » Запись unicode строк в файл
1
corpse
Добрый день!
Недавно столкнулся со следующей проблемой - мне нужно записать unicode строку в файл, но как выяснилось, python не хочет записывать в файл что-либо кроме однобайтных кодировок, в следствие чего получаем следующий фейл:
Traceback (most recent call last):
File "brain.py", line 431, in <module>
bot.chat('temp','Привет!')
File "brain.py", line 407, in chat
log.write(tmp)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 23-28: ordinal not in range(128)

Оболочка завершила работу 1
После многочисленных поисков по различным форумам, нашёл несколько подобных тем, в которых предлагалось для записи строки в файл, сконвертировать её например в koi8-r или cp1251. Но что делать, если мне нужно записать именно в utf-8? Довольно странный атавизм для такого прогрессивного языка как python. Подскажите пожалуйста, куда копать и какие могут быть пути решения проблемы? В принципе, готов даже переписать всё под тройку, если это будет необходимо.
Андрей Светлов
Про атавизмы и однобайтные кодировки это вы сгоряча…
Пишите utf-8, кто мешает?
InPython
bot.chat('temp','Привет!').encode('utf-8')
corpse
Прошу прощения. Нашёл ответ сам. Проблема решается следующим образом:
log.write(tmp.encode('utf-8'))
Проще некуда. Даже стыдно, что сам не догадался.
py.user.next
corpse
Довольно странный атавизм для такого прогрессивного языка как python.
в третьем можно файл открыть в определённой кодировке
Андрей Светлов
Во втором есть codecs.open
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB