使用py2.7读取数据报错’gbk’ codec can’t encode”

1,085 阅读1分钟

在windows cmd 用python将读取的文件输出遇到报错’gbk’ codec

对于Unicode字符,需要print出来的话,由于本地系统是Windows中的cmd,默认codepage是CP936,即GBK的编码,所以python解释器需要先将上述的Unicode字符编码为GBK,然后再在cmd中显示出来。但是由于该Unicode字符串中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”的错误的。

解决方法 
在转换的时候必需进行一些前置动作

string.replace(u’\xa0’, u’ ‘)

将’\xa0‘替换成u’ ‘空格,这个\xa0就是那个html中的&nbps空格

demo :将读取的每一个字符 进行对应的替换即可

for x in xrange(0,len(line)):
	if not line[x] in characters:
		characters.append(line[x].replace(u'\xa0',u' '))

爬虫爬取的数据输出报错UnicodeEncodeError: 'gbk' codec can't encode character u'\xa0' in position,原因同上

解决方案:在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了 #你的字符串数据.encode('GBK','ignore')



request	= urllib2.Request(url=url)
response = urllib2.urlopen(request,timeout=20)
result = unicode(response.read())
result = str(result)

print result.encode('GBK','ignore')