UnicodeDecodeError: ‘gb2312‘ codec can‘t decode byte 0xe9 in position 5632: illegal multibyte sequen

业务需要写了个转码工具,将所有文件转成utf-8编码,但是报错了。。。
原代码大概如下:

import chardet


def get_coding(path):
    file = open(path, "rb")
    data = file.read()
    coding = chardet.detect(data).get("encoding")
    print(f"文件编码为:{coding}")
    with open(path, "r", encoding=coding) as f1, open("2.txt", "w", encoding="utf-8") as f2:
        for l in f1:
            f2.write(l)


if __name__ == "__main__":
    get_coding("1.textgrid")

报错情况如下:
在这里插入图片描述
百度了一番,发现gb2312编码解码不能用gb2312编码,改成gbk即可
修改后的代码如下:

import chardet


def get_coding(path):
    file = open(path, "rb")
    data = file.read()
    coding = chardet.detect(data).get("encoding")
    print(f"文件编码为:{coding}")
    # -------这里将encoding改为gbk--------
    with open(path, "r", encoding="gbk") as f1, open("2.txt", "w", encoding="utf-8") as f2:
        for l in f1:
            f2.write(l)


if __name__ == "__main__":
    get_coding("1.textgrid")

以防下次遇到这种错误,特此记录一下~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值