Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2011 18:58:51

corpse
От:
Зарегистрирован: 2010-03-27
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись unicode строк в файл

Добрый день!
Недавно столкнулся со следующей проблемой - мне нужно записать 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. Подскажите пожалуйста, куда копать и какие могут быть пути решения проблемы? В принципе, готов даже переписать всё под тройку, если это будет необходимо.



Офлайн

#2 Апрель 22, 2011 19:01:19

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Запись unicode строк в файл

Про атавизмы и однобайтные кодировки это вы сгоряча…
Пишите utf-8, кто мешает?



Офлайн

#3 Апрель 22, 2011 19:21:08

InPython
От:
Зарегистрирован: 2011-01-31
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись unicode строк в файл

bot.chat('temp','Привет!').encode('utf-8')



Офлайн

#4 Апрель 22, 2011 19:50:24

corpse
От:
Зарегистрирован: 2010-03-27
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись unicode строк в файл

Прошу прощения. Нашёл ответ сам. Проблема решается следующим образом:

log.write(tmp.encode('utf-8'))
Проще некуда. Даже стыдно, что сам не догадался.



Офлайн

#5 Апрель 25, 2011 04:11:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Запись unicode строк в файл

corpse
Довольно странный атавизм для такого прогрессивного языка как python.
в третьем можно файл открыть в определённой кодировке



Офлайн

#6 Апрель 25, 2011 04:53:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Запись unicode строк в файл

Во втором есть codecs.open



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version