Не могу закодировать кириллицу в Python 2.7.x - PullRequest
1 голос
/ 14 ноября 2011

Когда я пытаюсь закодировать кириллицу "Р", я получаю ошибки. Вот мой код и ошибки:

>>> "Р".encode('utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

Как это решить. Пожалуйста, помогите мне. Я использую Python 2.7.x. Спасибо за каждый совет.

РЕДАКТИРОВАНИЕ:

def _to_unicode_or_bust(self, obj, encoding='utf-8'):
    if isinstance(obj, basestring):
        if not isinstance(obj, unicode):
            obj = unicode(obj, encoding)
    return obj

Я получаю выше метод из презентации. Это работа в терминале и простой файл Python. Это не работает в OpenERP.

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Все, что в "" (например, str) в Python 2.x, уже закодировано.Вам нужно декодировать его в unicode, прежде чем вы сможете его кодировать как-то еще.

"Юникод в Python, полностью демистифицирован"

0 голосов
/ 14 ноября 2011

Интерпретатор Python запускается в режиме только для ascii, поэтому вы не можете напрямую вводить символы кириллицы. Вместо этого вы можете создать их по номерам их кодов:

>>> print unichr(0x420)
Р
>>> unichr(0x420).encode('utf-8')
'\xd0\xa0'

или по именам:

>>> u'\N{CYRILLIC CAPITAL LETTER ER}'.encode('utf-8')
'\xd0\xa0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...