Если у вас есть строка Unicode, и вы хотите записать ее в файл или другую сериализованную форму, вы должны сначала кодировать в определенное представление, которое можно сохранить. Существует несколько распространенных кодировок Unicode, таких как UTF-16 (для большинства символов Unicode используется два байта) или UTF-8 (1-4 байта / кодовая точка в зависимости от символа) и т. Д. Чтобы преобразовать эту строку в определенную кодировку, можно использовать:
>>> s= u'£10'
>>> s.encode('utf8')
'\xc2\x9c10'
>>> s.encode('utf16')
'\xff\xfe\x9c\x001\x000\x00'
Эта необработанная строка байтов может быть записана в файл. Однако обратите внимание, что при чтении обратно вы должны знать, в какой кодировке он находится, и декодировать его, используя ту же кодировку.
При записи в файлы вы можете избавиться от процесса ручного кодирования / декодирования, используя модуль codecs . Итак, чтобы открыть файл, который кодирует все строки Unicode в UTF-8 , используйте:
import codecs
f = codecs.open('path/to/file.txt','w','utf8')
f.write(my_unicode_string) # Stored on disk as UTF-8
Обратите внимание, что все, кто использует эти файлы, должно понимать, в какой кодировке находится файл, если они хотят их прочитать. Если вы являетесь единственным, кто выполняет чтение / запись, это не проблема, в противном случае убедитесь, что вы пишете в форме, понятной для всех, кто использует файлы.
В Python 3 эта форма доступа к файлам используется по умолчанию, а встроенная функция open
будет принимать параметр кодирования и всегда переводить в / из строк Unicode (строковый объект по умолчанию в Python 3) для открытых файлов в текстовом режиме.