首页 > pycharm解析网页无法显示中文字符

pycharm解析网页无法显示中文字符

我用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)


或者你可以保存文件到txt,其实现实是正确的。

问题是print函数。

ubuntu的pycharm中文注释显示乱码


先告诉你一个原则,在代码中,尽量保持是unicode的编码,出来包括输出,或者保存到文件尽量不要是unicode的编码,所以,你的print response.read().decode('utf-8') 就是把源码以unicode形式输出了,这样是不行的,需要是utf-8或者gbk, 因此你的.decode('utf-8')是多余的.只需要:

print response.read()

另外开头的

# coding:utf-8
#coding:gbk

这个只是关于代码的编码,比如说,你代码中有中文注释,如果不加开头的东西的话,会报错的。跟你输出没有任何关系。因此没有必要纠结开头的那个编码。
另外需要注意的是:

print response.read()

它的输出就是网页的编码输出的, 如果网页是gbk输出就是gbk,反过来如果是utf-8就是utf-8.因此想输出中文的话,还要考虑你的终端,比如windows下的cmd识别gbk编码。如果网页的编码是utf-8的话,输出也会是乱码,需要转换一下

print response.read().decode('utf-8').encode('gbk') #decode('utf-8')把utf-8解码为decode,encode('gbk')将unicode编码为gbk.

所以编码这块思路很清晰:进去unicode, 出来不是unicode.


两个步骤:
1、设置PyCharm工具的编码格式:File--》setting--》Editor--》File Encodings--》IDE encoding:utf-8

2、在File--》Setting--》File and Code Templates模块里加入下面语句:
文件首行添加:
#-*- encoding:utf-8 -*-
__author__ = '$USER'


如果源文件里有中文,请使用 UTF-8 编码保存文件,并在文件头部声明:# coding: utf8

  1. 豆瓣的页面使用的是 UTF-8 编码,所以 response.read() 得到的是 UTF-8 编码的数据。你需要使用 decode('utf-8')str 转换为 unicode

  2. 想在 Windows 显示,那么还需要转成 GBK 编码才可以,所以在1的基础上,encode('gbk') 再输出应该就正确了。

【热门文章】
【热门文章】