python 在Shell中显示中文乱码解决

在python中使用mechanize从网上拉下一张网页,使用read()读取页面内容后,print显示。在IDE(Eclipse)中直接运程序后,显示中文正常。但在Shell中测试时,read()后print的显示就是乱码了。

程序源码

from mechanize import Browser

br=Browser()
r=br.open("http://www.######.net")
s=r.read()
print s

运行后显示:

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


   
   

一切正常,但在Shell中测试时,按行输入上述代码,显示却是:

'\xef\xbb\xbf\r\n\r\n\r\n    \r\n    u'\ufeff\r\n\r\n\r\n    \r\n    '\ufeff”,去除这个字符后,显示就正常了。

假定使用如下语句获得输出:

s=r.read()

在shell中使用“print s.decode("utf-8")[1:]”,输出就正常了。

网上说明原因为:

某些软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM),转码后是“'\ufeff”,因此我们在读取时需要自己去掉这些字符。

你可能感兴趣的:(python 在Shell中显示中文乱码解决)