2012-07-08 69 views
2

蟒蛇3.X蟒蛇输入的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以提供命令行历史记录。

+0

适合我。 – 2012-07-08 21:20:43

+0

听起来像一个破碎的终端,它是什么终端? – bobince 2012-07-09 13:40:01

+0

标准一个,6-7岁的macbook,10.6.8,虽然我运行遮阳板。 – beoliver 2012-07-09 13:44:21

回答

5

它看起来像退格删除最后字节而不是最后字符。是什么最终情况是,你键入:

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