在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')