[ Content | View menu ]

Исключение UnicodeEncodeError при записи юникода в файл в Python

Опубликовано 04.06.2013

Если при попытке записи юникодной строки в файл:

with open('/tmp/fail','w') as f:
   f.write(u'привет!')

вываливается исключение:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)

можно не перечитывать судорожно Python Unicode HOWTO, а открывать файл с помощью функции codecs.open, обеспечивающей прозрачное перекодирование из внутреннего формата python в нужную кодировку:

import codecs
with codecs.open('/tmp/success','w','utf-8') as f:
   f.write(u'привет!')
«
»

1 комментарий

Write a comment - TrackBack - RSS Comments

  1. Comment by Сергей:

    Кратко и по существу! Но здесь есть и обратная сторона – действия типа “\n” перестают восприниматься компилятором: они не включаются в текстовый файл, равно как и не выполняют своей функции…

    19.11.2013 @ 13:44
Write comment

Я не робот.