CodeTransmit
CodeTransmit copied to clipboard
有些文件识别不到需要转换
如图所示,我要把所有.cpp都转换为UTF-8 BOM,转换完成后有部分文件仍然是UTF8格式而不是UTF-8 BOM。 我单独选择这个文件来转换,Log 窗口说不需要转换。
这个是解码器识别问题。我用旧版本的解码器测试是可以正常识别和转换的,可以先临时用旧版本转下,后续版本会考虑加上多解码器自由选择和切换的功能。
---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年12月15日 21:29 | | 收件人 | @.> | | 抄送至 | @.***> | | 主题 | [clorymmk/CodeTransmit] 有些文件识别不到需要转换 (Issue #3) |
如图所示,我要把所有.cpp都转换为UTF-8 BOM,转换完成后有部分文件仍然是UTF8格式而不是UTF-8 BOM。
YDlidarDriver.zip
2023-12-15.212451.png (view on web)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
直接用我这段代码吧,chatgpt生成的,很好用
import os import chardet import codecs
def convert_to_utf8(file_path): # 检测文件编码 with open(file_path, 'rb') as f: result = chardet.detect(f.read()) encoding = result['encoding'] # 如果文件编码不是UTF-8,则进行转换 if encoding and encoding.lower() != 'utf-8': # 以原编码读取文件内容 with codecs.open(file_path, 'r', encoding) as f: content = f.read() # 以UTF-8编码重新写入文件 with codecs.open(file_path, 'w', 'utf-8') as f: f.write(content)
def convert_directory_to_utf8(directory): # 遍历指定目录下的所有文件和子目录 for root, dirs, files in os.walk(directory): for file in files: # 检查文件是否是.h或.cpp文件 if file.endswith(('.h', '.cpp')): # 构建文件的完整路径 file_path = os.path.join(root, file) # 调用convert_to_utf8函数进行编码转换 convert_to_utf8(file_path)
convert_directory_to_utf8('C:/Users/Administrator/Desktop/pythonProject3/test')