python对文件转码的时候,对转码报错的处理。

在Python中对包含混合编码的utf-8 CSV文件转码成GB2312时遇到UnicodeError。通过添加`decode("utf-8", "ignore")`和`encode("GB2312", "ignore")`参数,可以忽略无法转码的字符,成功完成转码操作,尤其适用于处理包含生僻字和特殊符号的网络爬虫数据。" 87807727,5613650,使用C语言封装HTTP POST请求,"['网络编程', 'HTTP协议', 'C语言开发']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况大概是这样的,后台收集了很多文件名称的数据,生成了一些编码格式为utf-8的csv文件,这些文件直接用excel打开会乱码,所以就需要转码成GB2312格式,
但是通过content.decode("utf-8").encode("GB2312")转码时报错提示UnicodeError:'utf8' codec can't decode byte 0xc7in position461:invaild continuation byte。


转码时首先需要通过decode("utf-8")将文本转换成中间码unicode,这一步报错的提示是在文本第461个字节处转码失败,chardet.detect(filename)读取到文本的格式虽然是utf8的,但是文本里面却混有多种格式的字符,其中第461个字节不是utf8格式的,也就不能从utf8转换成unicode格式了 ,这时候可以通过增加一个参数"ignore"来跳过文件中无法转码的字符,写成 ,更改后运行结果如下:


此时decode("utf-8")这一步没有问题了,但是encode("GB2312")又出现问题,问题原因与上面类似,GB2312因为识别不了文本中的非法字符u'\ufeff',导致编码失败,处理方法同上,可以增加一个参数"ignore"来跳过GB2312识别不了的非法字符,写成decode("GB2312","ignore"),修改后运行正常。

总结:使用python对文件进行转码的时候,特别是写一些爬虫的时候,由于网上很多内容包含很多生僻字、特殊符号等,一般编码格式都无法应对了,转码的时候可以通过增加一个"ignore"来跳过这些生僻字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值