python输入UnicodeDecodeError:

时间:2012-07-08 21:12:45

标签: python unicode input

python 3.x

>>> a = input()
hope
>>> a
'hope'
>>> b = input()
håpe
>>> b
'håpe'
>>> c = input()

start typing hå... delete using backspace... and change to hope

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 1: invalid continuation byte
>>> 

情况并不可怕,我正在解决它,但发现奇怪的是,删除时,字节搞砸了。还有其他人经历过这个吗?

终端历史记录显示我认为我已输入h?ope

任何想法?

在使用它的脚本中,我导入readline以提供命令行历史记录。

1 个答案:

答案 0 :(得分:6)

看起来退格正在删除最后一个字节而不是最后一个字符。最终发生的是你输入:

68 c3 a5
h |  å

68 c3 6f 70 65
h |  |o |p |e

在UTF-8中,第一个位设置(c3)的字节意味着下一个字节也必须设置其第一个位(参见Wikipedia's description)。

确保终端模拟器和读取线理解您使用的是UTF-8。