2012-04-20 3 views
8

У меня проблема с Python с Unicode. Мне нужно построить график с аннотациями Unicode. Согласно tutorial, я должен просто создать свою строку в Unicode. Я делаю это так:Python: Создание строки Unicode

annotation = u"%s has %s rev"%(art.title, len(art.revisions)) 

Это art.title, что имеет символы Unicode в нем. Иногда этот код работает, иногда он дает мне ошибку ниже:

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

Как это исправить?

EDIT: У меня есть ошибка именно после строки «аннотаций»:

File "script.py", line 195, in test_trie 
annotation = u"%s has %s rev"%(art.title, len(art.revisions)) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128) 
+1

Где находится 'art.title'? –

+0

Вы уверены, что сообщение об ошибке указано для кодовой строки, которую вы нам дали? Я подозреваю, что ошибка возникает, когда вы печатаете «аннотацию». В этом случае вы могли бы также показать эту строку кода? – jogojapan

+0

@jogojapan да, см. Редактирование вопроса. – ashim

ответ

5

Я думаю, что это зависит, если ваш заголовок имеет Юникод или нет.

Я бы попробовать добавить art.title.encode("utf-8") или art.title.decode("utf-8") и посмотреть, как это работает

4

У вас есть два варианта: либо использовать art.title.decode('utf_8'), или создать новую Unicode строку с UTF-8 кодировкой на unicode(art.title, 'utf_8').

+0

Эти два выражения делают то же самое, и «декодирование» будет моим выбором. Для аналогичной ситуации см. Http://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3 –

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