找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 文档 工具 设计
查看: 136|回复: 0

批量修改txt(或其他)文件编码为utf-8

[复制链接]

2万

主题

1249

回帖

2万

积分

超级版主

教育辅助界扛把子

附加身份标识
精华
1
热心
7
听众
1
威望
48
贡献
14309
违规
0
书币
49983
注册时间
2020-4-8

论坛元老灌水之王

发表于 2022-10-14 19:04 | 显示全部楼层 |阅读模式
这两天敲代码批量处理txt文件时一直出现报错:

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xbc in position 2: invalid start byte
通过查找资料最终确定原因有两个:
(1)txt文件的编码方式不是utf-8,这需要特别写一个程序,将所有的txt文件的编码方式都改为utf-8
(2)代码的编码方式不是utf-8,在程序文件加一段代码即可:# -- coding: utf-8 --
批量修改txt文件编码为utf-8的代码如下:

[Python] 纯文本查看 复制代码
# 批量修改txt的编码方式为utf-8
# 注意,该.py文件需放在txt文件所在文件夹里运行才可以

import os
from chardet import detect
fileSuffix = 'txt'
fns = []
filedir = os.path.join(os.path.abspath('.'), "")
    # os.path.abspath() 获取指定文件或目录的绝对路径
file_name = os.listdir(os.path.join(os.path.abspath('.'), ""))
    # os.listdir() 用于返回一个由文件名和目录名组成的列表,即返回当前路径(文件夹)下所有文件的绝对路径列表
for fn in file_name:
    if fn.endswith(fileSuffix):
        # endswith() 判断字符串是否以指定后缀结尾
        fns.append(os.path.join(filedir, fn))
for fn in fns:
    with open(fn, 'rb+') as fp:
        content = fp.read()
        if len(content)==0:
            continue
        else:
            codeType = detect(content)['encoding']
            content = content.decode(codeType, "ignore").encode("utf8")
            fp.seek(0)
            fp.write(content)
            print(fn, ":已修改为utf8编码")


Great works are not done by strength, but by persistence! 历尽艰辛的飞升者,成了围剿孙悟空的十万天兵之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号


免责声明:
本站所发布的第三方软件及资源(包括但不仅限于文字/图片/音频/视频等仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢某程序或某个资源,请支持正版软件及版权方利益,注册或购买,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To: admin@cdsy.xyz

QQ|Archiver|手机版|小黑屋|城东书院 ( 湘ICP备19021508号-1|湘公网安备 43102202000103号 )

GMT+8, 2024-11-21 20:51 , Processed in 0.047755 second(s), 28 queries .

Powered by Discuz! CDSY.XYZ

Copyright © 2019-2023, Tencent Cloud.

快速回复 返回顶部 返回列表