问题
用Python抓取网页,保存为myWeb
然后将网页解码为Unicode:
myUnWeb=myWeb.decode(‘utf-8’)
然后用正则表达式处理: 处理过程略,得到myUnWebItems
然后print:
print myUnWebItems;
出现如下错误:
exception raised: ‘gbk’ codec can’t encode character u’\xa0’ in position 73: illegal multibyte sequence
解决过程
比较艰苦,差点儿放弃,不忍吐槽,略去数万字
问题原因
对于此Unicode字符(myUnWebItems
),需要print出来的话,由于本地系统是Windows中的cmd,默认codepage
是CP936
,即GBK
的编码,所以python解释器需要先将上述的Unicode
字符myUnWebItems编码为GBK
,然后再在cmd中显示出来。
但是由于myUnWebItems中包含一些GBK中无法显示的字符,导致此时提示’gbk codec can’t encode
的错误。
解决办法
方案1
在对unicode字符编码时,添加ignore
参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。对应代码为:
print myUnWebItems.encode(“GBK“, ‘ignore’);
方案2
或者,将其转换为GBK编码的超集GB18030
(即,GBK
是GB18030
的子集):
print myUnWebItems.encode(“GB18030“);
对应的得到的字符是GB18030的编码。