之前写项目的时候,因为每个人的开发环境不一样,Keil5的话,之前一起开发的人,他们配置的是GB2312,然后我也是。但是SourceInsight或者是VSCode的话,默认是UTF-8。考虑到代码是要上传Git的,所以应该都统一使用UTF-8编码,否则GB2312的中文注释会在Git历史记录里面显示乱码。
于是我就写了一个Python脚本来解决这个问题,因为文件数量很多的情况下,手动修改编码很麻烦。然后我这里利用的是chardet
这个库来检测文件的编码类型,然后递归搜索文件来转换编码。这个库的安装命令就是pip install chardet
。
下面是Python脚本的代码。
import os
import chardet
import codecs
# 目标编码类型
target_encoding = 'utf-8'
# 替换为需要修文件的目录路径
directory_path = './User'
def detect_encoding(file_path):
with open(file_path, 'rb') as f:
result = chardet.detect(f.read())
return result['encoding']
def convert_file_encoding(file_path, source_encoding, target_encoding):
with codecs.open(file_path, 'r', source_encoding) as source_file:
content = source_file.read()
with codecs.open(file_path, 'w', target_encoding) as target_file:
target_file.write(content)
def convert_directory(directory):
for root, dirs, files in os.walk(directory):
for filename in files:
if filename.endswith('.c') or filename.endswith('.h'):
file_path = os.path.join(root, filename)
source_encoding = detect_encoding(file_path)
print(f"Detected encoding '{source_encoding}' for file '{file_path}'. Converting to '{target_encoding}'...")
convert_file_encoding(file_path, source_encoding, target_encoding)
convert_directory(directory_path)