关于python3的编码问题

今天写爬虫的时候突然遇到一个编码问题

UnicodeEncodeError: 'gbk' codec can't encode character '\xee' in position 20762: illegal multibyte sequence
在我的爬虫代码中,用了decode('utf-8'),但是竟然出现了gbk的编码错误

到网上查了一下资料,原来是因为python的print函数的自身限制,它并不能打印出所有的Unicode字符,所以我们可以将print函数的默认编码改为unicode编码

import io
import sys
import urllib.request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
res=urllib.request.urlopen('http://www.baidu.com')
htmlBytes=res.read()
print(htmlBytes.decode('utf-8'))

此时它不会再报错,但是会出现乱码,原来是因为在cmd不能很好地兼容utf-8的编码,我们可以将它改为 gb18030

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')         #改变标准输出的默认编码  
然后就好了

你可能感兴趣的:(python)