2015-05-22 5 views
1

У меня есть следующая строка:Python: какая кодировка использует «печать»?

u'Il mare \xe8 bello' 

Если я print, он отображается правильно:

Il mare è bello 

Но когда я передать его в библиотеку (tweepy), я получаю следующее сообщение об ошибке:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 0: ordinal not in range(128) 

Я попытался преобразовать его с помощью str, unicode, кодеков, кодировать и декодировать, но всегда получаю ту же ошибку. Есть идеи?

+1

Проблема не в 'print', а в том, что' tweepy' не принимает строки Unicode. –

+0

Почему, по вашему мнению, сообщение об ошибке связано с выражением 'print'? Показать полный трафик. – jfs

ответ

2

Она должна быть кодировка по умолчанию, если вы не меняете его -

sys.getdefaultencoding()

+0

'print' не использует' sys.getdefaultencoding() 'encoding, если' sys.stdout.encoding не является None'. Хотя, вероятно, это сообщение об ошибке относится к нему, то есть заголовок и сообщение об ошибке могут быть не связаны, если выход не перенаправляется при запуске кода с «tweepy». – jfs

0

Почему вы спрашиваете о печати, когда вы на самом деле есть проблемы с tweepy? И почему вы не показываете нам свой код, пытающийся использовать tweepy? Во всяком случае, вы должны быть в состоянии кодировать так: кодирование

u'Il mare \xe8 bello'.encode('utf-8') 
0

по умолчанию на python2 является Ascii, на Python3, это UTF8.

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