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以提供命令行历史记录。

最佳答案

好像退格键正在删除最后一个字节而不是最后一个字符。最终发生的事情是您键入:

68 c3 a5
h |  å

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

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

确保您的终端仿真器和readline了解您正在使用UTF-8。

关于python输入UnicodeDecodeError :,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11386747/

10-13 09:14