我用pycharm写了一个urllib2打开网页:
coding=gbk
import urllib2
url = 'http://www.douban.com/'
request = urllib2.Request(url)
response = urllib2.urlopen(request)
print response.read().decode('utf-8')
print "北京"
发现print “北京”能够正确显示中文字符,但是网页内容却是中文乱码,如下
br><img src="https://img3.doubanio.com/pics/icon/jubao.png" align="absmiddle" width="15px"> 涓浗浜掕仈缃戜妇鎶ヤ腑蹇� 鐢佃瘽锛�12377
北京
不知道哪位大神能告诉我怎么设置才能正确显示中文字符?(win7系统默认GBK,python2.7.11,pycharm4.5)
先告诉你一个原则,在代码中,尽量保持是
unicode
的编码,出来包括输出,或者保存到文件尽量不要是unicode
的编码,所以,你的print response.read().decode('utf-8')
就是把源码以unicode形式输出了,这样是不行的,需要是utf-8
或者gbk
, 因此你的.decode('utf-8')
是多余的.只需要:另外开头的
这个只是关于代码的编码,比如说,你代码中有中文注释,如果不加开头的东西的话,会报错的。跟你输出没有任何关系。因此没有必要纠结开头的那个编码。
另外需要注意的是:
它的输出就是网页的编码输出的, 如果网页是
gbk
输出就是gbk
,反过来如果是utf-8
就是utf-8
.因此想输出中文的话,还要考虑你的终端,比如windows
下的cmd
识别gbk
编码。如果网页的编码是utf-8
的话,输出也会是乱码,需要转换一下所以编码这块思路很清晰:进去unicode, 出来不是unicode.