蟒蛇输入的UnicodeDecodeError:
问题描述:
>>> 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。
+0
这当然有道理。至少我知道发生了什么事! – beoliver 2012-07-08 21:30:43
适合我。 – 2012-07-08 21:20:43
听起来像一个破碎的终端,它是什么终端? – bobince 2012-07-09 13:40:01
标准一个,6-7岁的macbook,10.6.8,虽然我运行遮阳板。 – beoliver 2012-07-09 13:44:21