py文件默认ascii编码,当字符集为uft-8是,在文件头部加入以下代码防止乱码:
# -*- coding: utf-8 -*-
每次抓取网页数据后,都会出现
'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
的错误,查出是python编码的问题。
两种解决思路:
1.代码中添加
import sys
reload(sys)
sys.setdefaultencoding('utf8')
2.全局文件修改
在Python安装目录下的Lib/site-packages目录中,新建一个sitecustomize.py文件(也可以建在其它地方,然后手工导入,建在这里,每次启动Python的时候设置将自动生效),内容如下:
importsys
sys.setdefaultencoding('utf-8')#set default encoding to utf-8
然后可以查看到改变已经生效
>>>importsys
>>> sys.getdefaultencoding()
'utf-8'
此时运行程序,如果仍然报告之前的错误,只需要显示地设定输出的编码
prints.encode('utf-8')
就可以看到正确显示。