UnicodeEncodeError输出字符串

python中scrapy爬取网页的时候 抓到一个字符串,
print出来就出现如下错误,
UnicodeEncodeError: 'gbk' codec can't encode character u'\xa0'
后来查了一下,这个就是;nbsp,
只有去掉这个非法字符才行,临时解决办法:strtime = strtime.replace(u'\xa0',u'')#去掉\xa0非法字符
为什么会出现像这种情况,其实是和windows下编码有关,比如我创建文本fwrite写入或者在print输出到cmd,都是默认GBK编码。

f = open("out.txt","w")  
f.write(content)

如果content是UTF-8,其中包含'\xa0',这是允许的。
但是使用fwrite,windows中文版默认的文件格式编码是gbk,'\xa0'是无法编码为gbk的,所以出现这个提示。
那么,我们只需要改变文件编码就行,加上encoding='utf-8'参数

f = open("out.txt","w",encoding='utf-8') )  
f.write(content)

这样就不会提示错误了。

如果是print到cmd提示这个错误,就只能手动更改CMD的编码了,
CHCP查看,默认的是936
1、输入CHCP 65001,回车;(注意:此编码下PIP会出错)
2、在窗体上右键,选择属性,来设置字体Lucida Console字体,确定

你可能感兴趣的:(UnicodeEncodeError输出字符串)