在使用print语句调试UnicodeDecodeError
时,我很难理解发生了什么。
我对自己的疯狂理论感到困惑,但最终问题只是打印一个特定的字符串:
print '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg'
导致它挂起的原因是什么?
我应该使用什么来打印到控制台? print repr(x)
?
答案 0 :(得分:2)
在我的Linux上运行正常
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg'
未命名.jpg
您使用的是哪种控制台?也许它有一个bug
答案 1 :(得分:0)
这似乎是UTF8编码的字符串:
>>> '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg'.decode('utf8')
u'\u672a\u547d\u540d.jpg'
如果您的控制台只能处理ASCII,而不是(比方说)UTF-8,它会崩溃,因为无法将这一系列字节解码为ASCII可表示的字符串:
>>> '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d.jpg'.decode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
您需要使用支持UTF-8的控制台。