PY3读写文件编码小笔记


错误描述

最近在学习 py3 的爬虫时,遇到了一个编码的问题,在抓取页面的 html 代码进行存储时:

with open(filename,'w') as f:
    f.write(html)

出现了错误,错误详情如下:

UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f434' in position xxxxxx: illegal multibyte sequence


不是原因的原因

搜索的很多资料都提示使用各种 encode() decode() 和 'utf-8' 'gbk' 之类的处理方法:

  • encode()转化之后,得到的是byte字节流,用于传输等途径的使用。
  • decode()转化相应的到的就是字符串了。
  • 在这里程序是要将 网络数据流 (byte) 写入到文件中 (str) ,那么我们需要做的就是 byte —— decode() ——>str 的一个过程
  • 在 windows 下,新文件默认的编码是 gbk 编码,所以 python 解释器,就将我们的 unicode 编码内容,当做 gbk 编码进行处理。(在我的环境下,使用  print(chardet.detect(html))  看到的是 'Windows-1254’    ^(* ̄(oo) ̄)^  )

然后就报出了这个错误 = =


解决方法

就是指定要写入的文件的编码方式,即通过我想要的utf-8打开并写入

f = open("out.html","w",encoding='utf-8')


参考资料

https://www.cnblogs.com/themost/p/6603409.html

https://blog.csdn.net/chixujohnny/article/details/51782826

https://www.jianshu.com/p/6cbb2b14cda9

 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值