Ошибка кодирования / декодирования с использованием utf-8 - PullRequest
0 голосов
/ 28 февраля 2012

Как бы я правильно закодировал следующее:

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

>>> 'What\x80\x99s Up: Balloon to the Rescue!'.encode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 4: ordinal not in range(128)
>>> 'What\x80\x99s Up: Balloon to the Rescue!'.decode('utf-8')
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 4: invalid start byte

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

У вас есть два вопроса здесь.Во-первых, неправильная последовательность байтов UTF-8;это должно быть \xe2\x80\x99.Вы также используете неправильную функцию;вам нужно декодировать это из UTF-8:

>>> print 'What\xe2\x80\x99s Up: Balloon to the Rescue!'.decode('utf-8')
What’s Up: Balloon to the Rescue!
0 голосов
/ 28 февраля 2012
>>> type('What\x80\x99s Up: Balloon to the Rescue!')
<type 'str'>

Таким образом, вы не можете кодировать , поскольку это не Unicode.

Какой у вас ввод Unicode?

...