解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid continuation byte

困扰了很久的问题今天终于解决了!!!

异步导入csv文件提示UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte

原代码为:

    resp = requests.get(private_url).content
    with open(file_dir_name, "w") as fd:
        fd.write(resp.decode(encoding="utf-8"))

解码的字符格式我换成了gbk,Latin。。。各种都试过,只要有中文,就会报错。

年少的我不懂事,不知道翻译一看,看到这个报错想当然认为是解码的字符集不对,直到今天,我终于正视了bytes,我仿佛找到了解决门道。

于是我打印了resp的type类型,发现果然是<class 'bytes'>, 不就是二进制字节类型吗

然后我再次看了代码,resp取的是requests的content,点进去看content的源码解释:

    def content(self):
        """Content of the response, in bytes."""

响应内容就是bytes类型。

更改后的代码为:

    resp = requests.get(private_url).content
    with open(file_dir_name, "w") as fd:
        fd.write(resp.decode(encoding="unicode_escape"))

unicode_escape就是对编码后存储的文本,读取时进行反向转换,就能直接得到原始文本数据。

最后完美解决。

感谢https://www.cnblogs.com/my_captain/p/9092644.html

ps:想起之前的产品问我为什么不能加入中文,我和他好生辩论了一番,现在想起来还是我太菜了,遇到问题没找到解决办法就翻篇。其实这次我差点又想不让文件中有中文,但是这个产品要求一定有中文,于是我便深入了解了一下。。。没有解决不了的难题,只有一颗懒惰的怕麻烦的心~

  • 14
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值