这是令人震惊和非常令人沮丧的,请帮助。
>>> a1 = '\xe5' # type <str>
>>> a2 = u'\xe5' # type <unicode>
>>> ord(a1)
229
>>> ord(a2)
229
>>> print a2.encode('utf-8')
å
>>> print a1.encode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
如果 a1 和 a2 具有相同的值,为什么不能都编码?
我必须使用在表单上返回 unicode 数据的外部 API a1
,这使得它毫无用处。Python 显然坚持<str>
键入的字符串必须只包含 ASCII 字符,否则它拒绝对它们进行编码。它完全破坏了我的应用程序。