MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Использование UTF-8 в Python, устранение проблем с кодировкой
28.12.2012
00:02
Текстовые метки: кодировка, python, UnicodeDecodeError, UTF-8, unicode, юникод
Раздел: Компьютер - Программирование - Язык Python

Быстрое, но не всегда работающее решение


Вначале скрипта надо прописать:


# -*- coding: utf-8 -*-


Соответственно, сам текст скрипта должен быть в кодировке UTF-8.



UTF-8 и Python 2.7.x


Но не все так просто. В Python 2.7.x, даже если прописать эту строку в начало файла с исходником, даже если все файлы с исходниками будут в кодировке UTF-8, то не исключена ситуация, что всеравно появится ошибка:


UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)


В куче статей, которыми наполнен интернет, почему-то предлагаются частные решения этой глобальной проблемы. Предлагают использовать запись строк с буквой u в начале: u"Это строка". Другой предлагаемый метод - если у вас встречаются строки на русском языке или с кириллическими символами, перекодируйте их в юникод с помощью встроенного в строку метода decode():


a="Строка в UTF-8"

b=a.decode("utf-8")


Но такой метод решения проблем - это все равно что вилкой копать скалу. Исковыряете весь код лишними строками, а проблема как была так и останется.



Однако решение все-таки есть


В начале модуля, в котором возникает ошибка, надо прописать:


# Устранение проблем с кодировкой UTF-8

import sys

reload(sys)

sys.setdefaultencoding('utf8')


И ошибка кодировки исчезнет.


Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования