批量转换.txt文件的编码格式为utf-8

Posted monster-yher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量转换.txt文件的编码格式为utf-8相关的知识,希望对你有一定的参考价值。

.txt文件原本的编码格式为国标或者ANSI,需要转换为utf-8,防止中文乱码。

  • 只要修改path路径为.txt文件所在目录即可。
  • 如果出现No module named ‘chardet‘错误,先执行pip install chardet安装这个库。
  • 注意:如果.txt文件本身已经是utf-8编码格式,再次转换也会乱码,不要多次转换。
import os
import codecs
import chardet

def list_folders_files(path):
    """
    返回 "文件夹" 和 "文件" 名字
    :param path: "文件夹"和"文件"所在的路径
    :return:  (list_folders, list_files)
            :list_folders: 文件夹
            :list_files: 文件
    """
    list_folders = []
    list_files = []
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isdir(file_path):
            list_folders.append(file)
        else:
            list_files.append(file)
    return (list_folders, list_files)

def convert(file, in_enc="GBK", out_enc="UTF-8"):
    """
    该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8
    :param file:    文件路径
    :param in_enc:  输入文件格式
    :param out_enc: 输出文件格式
    :return:
    """
    in_enc = in_enc.upper()
    out_enc = out_enc.upper()
    try:
        print("convert [ " + file.split(‘\‘)[-1] + " ].....From " + in_enc + " --> " + out_enc)
        f = codecs.open(file, ‘r‘, in_enc, "ignore")
        new_content = f.read()
        codecs.open(file, ‘w‘, out_enc).write(new_content)
    except IOError as err:
        print("I/O error: {0}".format(err))
# 将路径下面的所有文件,从原来的格式变为UTF-8的格式
if __name__ == "__main__":

    print(‘abc‘)
    path = r‘C:UsersoyDesktop	est‘         #只要满足形式,一般只需改变文件夹的路径即可
    (list_folders, list_files) = list_folders_files(path)

    print("Path: " + path)
    for fileName in list_files:
        filePath = path + ‘\‘ + fileName
        with open(filePath, "rb") as f:
            data = f.read()
            # codeType = chardet.detect(data)[‘encoding‘]
            convert(filePath, ‘GB2312‘, ‘UTF-8‘)

以上是关于批量转换.txt文件的编码格式为utf-8的主要内容,如果未能解决你的问题,请参考以下文章

求助:怎样用cmd命令把指定的a.txt文件的编码格式从ANSI转换为UTF-8。谢谢!

高分求-VB 把ANSI文本转换成UTF-8,多谢!!

怎么大批量转变TXT的编码为UTF-8

java 将编码格式为utf-8的文件内容以 GBK编码存到txt文档

如何检查TXT文本是否ANSI编码格式的?

请问用批处理命令如何将ANSI编码的txt文件批量转换utf8编码的?就右键另存为那种,但是量太大。