批量转换文件编码gb2312转utf 您所在的位置:网站首页 批量文件编码转换工具 批量转换文件编码gb2312转utf

批量转换文件编码gb2312转utf

2024-07-12 05:06| 来源: 网络整理| 查看: 265

 最近在做毕设,遇到了很多问题,感谢前人造的轮子让我少走很多弯路。

python的批量转换

原帖地址、mac测试正常。

文件编码批量转换为utf-8_clorymmk的博客-CSDN博客_批量转utf8

''' Description: GB2312转utf-8 Version: 1.0 Autor: Date: 2022-04-27 20:49:05 LastEditors: LastEditTime: 2022-04-27 21:09:35 ''' import os import codecs import chardet gErrArray = [] def convert(fileName, filePath, out_enc="utf-8"): try: content = codecs.open(filePath, 'rb').read() # source_encoding = chardet.detect(content)['encoding'] # 直接设置GB18030编码节省时间 source_encoding = 'GB18030' # print ("fileName:%s \tfileEncoding:%s" %(fileName, source_encoding)) print("{0:50}{1}".format(fileName, source_encoding)) if source_encoding != None: if source_encoding == out_enc: return content = content.decode(source_encoding).encode(out_enc) codecs.open(filePath, 'wb').write(content) else: gErrArray.append("can not recgonize file encoding %s" % filePath) except Exception as err: gErrArray.append("%s:%s" % (filePath, err)) def explore(dir): print( "\r\n===============================================================") print("{0:50}{1}".format('fileName', 'fileEncoding')) print("===============================================================") for root, dirs, files in os.walk(dir): for file in files: suffix = os.path.splitext(file)[1] if suffix == '.h' or suffix == '.c' or suffix == '.cpp' or suffix == '.hpp' or suffix == '.bat' or suffix == '.java' or suffix == '.txt': path = os.path.join(root, file) convert(file, path) def main(): #explore(os.getcwd()) filePath = input("请输入要转换编码的文件夹路径: \n") explore(filePath) print('\r\n---------错误统计------------') for index, item in enumerate(gErrArray): print(item) print('\r\n共%d个错误!' % (len(gErrArray))) if (len(gErrArray) > 0): print("请检查错误文件手动修改编码") print('\r\n-----------------------------') if __name__ == "__main__": while True: main() input("\r\n########### 按回车键继续转换!!! ###########\r\n")

vb方式实现

原帖地址、windows测试正常。

用VBS实现的批量gb2312转utf-8,支持拖动_VBS_脚本之家

' Description: 将gb2312文件转换成utf-8文件 ' Version: 1.0 ' Autor: ' Date: 2022-04-04 22:18:06 ' LastEditors: ' LastEditTime: 2022-04-04 22:38:56 Set objArgs = WScript.Arguments If objArgs.Count>0 Then If MsgBox("本程序仅支持GB2312到UTF-8的转换"&vbCrLf&"如果您所拖动的文件里有别的格式的文件请点“取消”", vbOKCancel + vbExclamation + vbDefaultButton2, "郑重提醒!!!") = vbOK Then For I = 0 To objArgs.Count - 1 FileUrl = objArgs(I) Call WriteToFile(FileUrl, ReadFile(FileUrl, "gb2312"), "utf-8") Next End If Else MsgBox "请将您要转换的“gb2312文件”拖到这个文件上"&vbCrLf&"程序会将它们自动转换为utf-8文件", vbInformation, "温馨提示:" End If '------------------------------------------------- '函数名称:ReadFile '作用:利用AdoDb.Stream对象来读取各种格式的文本文件 '---------------------------------------------------- Function ReadFile(FileUrl, CharSet) Dim Str Set stm = CreateObject("Adodb.Stream") stm.Type = 2 stm.mode = 3 stm.charset = CharSet stm.Open stm.loadfromfile FileUrl Str = stm.readtext stm.Close Set stm = Nothing ReadFile = Str End Function '------------------------------------------------- '函数名称:WriteToFile '作用:利用AdoDb.Stream对象来写入各种格式的文本文件 '参数:FileUrl-文件相对路径;Str-文件内容;CharSet-编码格式(utf-8,gb2312.....) '---------------------------------------------------- Function WriteToFile (FileUrl, Str, CharSet) Set stm = CreateObject("Adodb.Stream") stm.Type = 2 stm.mode = 3 stm.charset = CharSet stm.Open stm.WriteText Str stm.SaveToFile FileUrl, 2 stm.flush stm.Close Set stm = Nothing End Function



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有