2013-09-18 2 views
7
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 537: ordinal not in range(128), referer: ... 

Я всегда получаю эту ошибку, когда пытаюсь вывести весь мой сайт с символами «č». Я использую шаблоны mako. Что делать?UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xc5

+0

Возможный дубликат [Python, UnicodeDecodeError] (http://stackoverflow.com/questions/1766669/python-unicodedecodeerror) –

ответ

9

Ошибка возникает из-за того, что где-то код принуждает вашу строку шаблона unicode к python 2 str; вам нужно кодировать обработанный шаблон в UTF-8 байтовой строки себя:

if isinstance(rendered, unicode): 
    rendered = rendered.encode('UTF-8') 

# rendered is now guaranteed to be of type str 
-1

Вы можете заменить специальные символы č с этим кодом: č

"your string".replace('č','č') 

, если вы работаете на веб-сайте ˙U может создать функцию sanytize для всех специальных символов.

0

Проблема заключается в том, что ваш код не может расшифровать некоторые из персонажей из-за того, чтобы быть более 8 бит, поэтому постарайтесь использовать это:

converted = unicode("your_string", encoding="utf-8", errors="ignore") 

УДАЧИ

+0

К сожалению, это полная противоположность тому, что должен делать OP. –

+0

Боюсь, дорогая Антти. Думаю, я написал, что решение было точно ответным. Он хочет, чтобы его код пропускал Unicode, который содержит более одного байта, и это точное решение :) –

0

Убедитесь, что вы используете скрипт с правильные настройки локали, например

$ locale -a | grep "^en_.\+UTF-8" 
en_GB.UTF-8 
en_US.UTF-8 
$ export LC_ALL=en_GB.UTF-8 
$ export LANG=en_GB.UTF-8 

Docs: man locale, man setlocale.

Для Linux также установите языковой пакет, например. sudo apt-get install language-pack-en.

Смежные вопросы