如何解决UnicodeEncodeError:“ ascii”编解码器无法对位置0-5处的字符进行编码:序数不在range128中
Python试图提供帮助。您 无法解码 Unicode数据,因为它已经被解码。因此,Python首先将对数据 (使用ASCII编解码器)以获取要解码的字节。正是这种隐式编码失败。
如果您具有Unicode数据,则仅将其 为UTF-8是有意义的,而不能解码:
>>> print u'\u041e\u043b\u044c\u0433\u0430'
Ольга
>>> u'\u041e\u043b\u044c\u0433\u0430'.encode('utf8')
'\xd0\x9e\xd0\xbb\xd1\x8c\xd0\xb3\xd0\xb0'
如果需要Unicode值,则只需使用Unicode文字(u'...'
)。无需进一步解码。
相同的隐式转换发生在另一个方向。如果您尝试对字节串进行编码,则会触发隐式解码:
>>> u'\u041e\u043b\u044c\u0433\u0430'.encode('utf8').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)
解决方法
我只是尝试解码类似\ uXXXX \ uXXXX \ uXXXX的字符串。但我得到一个错误:
$ python
Python 2.7.6 (default,Sep 9 2014,15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help","copyright","credits" or "license" for more information.
>>> print u'\u041e\u043b\u044c\u0433\u0430'.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)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
我是Python新手。怎么了 谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。