使用py2.7讀取數據報錯’gbk’ codec can’t encode」

在windows cmd 用python將讀取的文件輸出遇到報錯’gbk’ codec

對於Unicode字符,須要print出來的話,因爲本地系統是Windows中的cmd,默認codepage是CP936,即GBK的編碼,因此python解釋器須要先將上述的Unicode字符編碼爲GBK,而後再在cmd中顯示出來。可是因爲該Unicode字符串中包含一些GBK中沒法顯示的字符,致使此時提示「’gbk’ codec can’t encode」的錯誤的。html

解決方法 
在轉換的時候必需進行一些前置動做

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

將’\xa0‘替換成u’ ‘空格,這個\xa0就是那個html中的&nbps空格

demo :將讀取的每個字符 進行對應的替換便可python

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

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

print result.encode('GBK','ignore')
複製代碼
相關文章
相關標籤/搜索