我用pycharm写了一个urllib2打开网页:
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)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
先告诉你一个原则,在代码中,尽量保持是
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.
如果源文件里有中文,请使用
UTF-8编码保存文件,并在文件头部声明:# coding: utf8。豆瓣的页面使用的是
UTF-8编码,所以response.read()得到的是UTF-8编码的数据。你需要使用decode('utf-8')把str转换为unicode。想在 Windows 显示,那么还需要转成 GBK 编码才可以,所以在1的基础上,
encode('gbk')再输出应该就正确了。两个步骤:
1、设置PyCharm工具的编码格式:File--》setting--》Editor--》File Encodings--》IDE encoding:utf-8
2、在File--》Setting--》File and Code Templates模块里加入下面语句:
文件首行添加:
#-*- encoding:utf-8 -*-__author__ = '$USER'或者你可以保存文件到txt,其实现实是正确的。
问题是print函数。
ubuntu的pycharm中文注释显示乱码