我希望以下代码运行正常,但它失败了,原因是什么?
>>> s = 'ö'
>>> s.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x94 in position 0: invalid start byte
答案 0 :(得分:3)
在交互式解释器中,字符串文字的编码完全取决于您的终端或控制台配置。在您的情况下,不设置为UTF-8。
您可以使用sys.stdin.encoding
属性来确定要使用的编解码器:
>>> s = 'ö'
>>> import sys
>>> s.decode(sys.stdin.encoding)
u'\xf6'
或者,只需直接创建unicode
字符串文字(使用u
前缀); Python交互式解释器知道在这种情况下使用sys.stdin.encoding
编解码器:
>>> s = u'ö'
>>> s
u'\xf6'