用requests爬取一个utf-8编码的网页,发现如果用交互命令行,输出没有任何问题,但是用notepad++输出却出现
gbk' codec can't encode character '\xbb' in position 12305: illegal multibyte sequence,这种问题,找了好久,终于在点击打开链接这里找到了答案,点击打开链接简单说就是,print()函数自身也就输出的限制,这就解释了为什么在交互命令行里没有出错的原因。因此,在notepad++里面输出的话,需要重新定义编码,因为一个网页里虽然是用utf-8编码,但是还是有几个特殊字符是其他格式,可以如下解决:
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码,什么都不要改,就这样加入。
输出的结果是英文字符正常,但是中文字符变为其他的类似于繁体字的乱码,这里可以将上面的:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
改为
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
这样终于解决了!笔记一下,以备以后查看!