了解Python交互式解释器中的打印字节

时间:2011-04-24 04:33:47

标签: python terminal byte ansi-escape

我偶然发现了我只能将其描述为Python交互式解释器中的错误。虽然这个bug相当无关紧要,但我觉得这是一个有趣的问题,也是学习python,低级计算和调试的好机会。

问题出现在这里:

pic = open("blurry.jpg", "rb")
data = pic.read()
for byte in data:
    print byte

这导致......

#prints the entire file byte by byte_
?

0
?
?
>>> 1;2c

完成此操作后,我发现[] {} \ @ ^已分别替换为Ä,Å,ä,å,ö,É,'Ü'。有趣的是,他们仍然保持功能。例如,list = Ä1,2,3,4Å不会引发任何错误。此外,可能更有趣......即使在我退出解释器并重新进入bash之后,这种行为仍在继续。

此外,我只能在使用我在此处托管的特定图片时重新创建此行为:http://imgur.com/lTo6m

我还没有弄清楚我会在哪里开始分析这样的问题,所以我希望有人可以提供一些见解。

一如既往地谢谢!

1 个答案:

答案 0 :(得分:7)

这不是Python的错误,这是您的终端切换到备用字符集。在shell提示符下运行reset以解决此问题。