Python 2.7字符串解码失败。

时间:2017-02-22 10:11:47

标签: python string python-2.7 unicode encoding

我希望以下代码运行正常,但它失败了,原因是什么?

>>> 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

1 个答案:

答案 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'