java 乱码 菱形 问号_python爬虫出现菱形问号乱码的解决方法

在windows下使用非idle的其他ide编辑器,会碰到这个问题。对抓取到的网页内容进行先解码再编码即可。

以requests为例:

r = r.content.decode('gbk').encode('utf-8')

出现编码问题时,

1.仔细分析错误的类型。

看是decode(解码)错误还是encode(转码)错误。

2.搞清自己处理的字符串是什么类型的。

一般看网页的charset,一般为gbk,gb2312或gb18030.其中包含字符的大小为gb2312 < gbk

(1)要处理的字符串本身不是gbk编码,但是你却以gbk编码去解码

比如,字符串本身是utf-8的,但是你却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错。

(2)处理的字符的确是gbk的,但是其中夹杂的部分特殊字符,是gbk编码中所没有的

如果有些特殊字符是GB18030中有的,但是是gbk中没有的。

则用gbk去解码,去所不支持的字符,也比如会出错。

所以,此种情况,可以尝试用和当前编码(gbk)所兼容的但所包含字符更多的编码(gb18030)去解码,或许就可以了。

3.然后换用这种的字符编码去编码或解码。

详情链接:https://www.crifan.com/summary_python_unicodedecode_error_possible_reasons_and_solutions/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值