12 changed files with 1393 additions and 1284 deletions
@ -0,0 +1,108 @@ |
|||||
|
#!/usr/bin/env python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
""" |
||||
|
转换项目中的所有文件编码为UTF-8无BOM格式(Linux兼容) |
||||
|
""" |
||||
|
|
||||
|
import os |
||||
|
import codecs |
||||
|
|
||||
|
def convert_file_to_utf8_no_bom(file_path): |
||||
|
"""将单个文件转换为UTF-8无BOM格式""" |
||||
|
try: |
||||
|
# 尝试自动检测文件编码并读取内容 |
||||
|
with open(file_path, 'rb') as f: |
||||
|
content = f.read() |
||||
|
|
||||
|
# 尝试几种常见的编码格式 |
||||
|
encodings = ['utf-8', 'utf-8-sig', 'gbk', 'gb2312', 'latin-1'] |
||||
|
text = None |
||||
|
|
||||
|
for encoding in encodings: |
||||
|
try: |
||||
|
text = content.decode(encoding) |
||||
|
break |
||||
|
except UnicodeDecodeError: |
||||
|
continue |
||||
|
|
||||
|
if text is None: |
||||
|
# 如果无法解码,使用二进制模式复制 |
||||
|
print(f"警告: 无法解码文件 {file_path},使用二进制模式复制") |
||||
|
with open(file_path + '.tmp', 'wb') as f: |
||||
|
f.write(content) |
||||
|
os.replace(file_path + '.tmp', file_path) |
||||
|
return False |
||||
|
|
||||
|
# 以UTF-8无BOM格式写入文件 |
||||
|
with open(file_path + '.tmp', 'w', encoding='utf-8') as f: |
||||
|
f.write(text) |
||||
|
|
||||
|
# 替换原文件 |
||||
|
os.replace(file_path + '.tmp', file_path) |
||||
|
|
||||
|
print(f"已转换: {file_path}") |
||||
|
return True |
||||
|
|
||||
|
except Exception as e: |
||||
|
print(f"错误: 转换文件 {file_path} 失败 - {str(e)}") |
||||
|
return False |
||||
|
|
||||
|
def main(): |
||||
|
"""主函数""" |
||||
|
# 设置项目根目录 |
||||
|
project_root = os.path.dirname(os.path.abspath(__file__)) |
||||
|
|
||||
|
# 定义需要转换的文件列表 |
||||
|
files_to_convert = [ |
||||
|
# 根目录下的文件 |
||||
|
'.gitignore', |
||||
|
'CMakeLists.txt', |
||||
|
'README.md', |
||||
|
'build.sh', |
||||
|
'build_windows.bat', |
||||
|
'test_cmake_config.cmd', |
||||
|
'test_compile.cmd', |
||||
|
|
||||
|
# include目录下的文件 |
||||
|
os.path.join('include', 'rpc_common.h'), |
||||
|
os.path.join('include', 'rpc_message.h'), |
||||
|
os.path.join('include', 'rpc_transport.h'), |
||||
|
|
||||
|
# src目录下的文件 |
||||
|
os.path.join('src', 'CMakeLists.txt'), |
||||
|
os.path.join('src', 'rpc_client.c'), |
||||
|
os.path.join('src', 'rpc_common.c'), |
||||
|
os.path.join('src', 'rpc_message.c'), |
||||
|
os.path.join('src', 'rpc_server.c'), |
||||
|
os.path.join('src', 'rpc_transport.c') |
||||
|
] |
||||
|
|
||||
|
print(f"开始转换项目文件编码为UTF-8无BOM格式(Linux兼容)...") |
||||
|
print(f"项目根目录: {project_root}") |
||||
|
print("=" * 60) |
||||
|
|
||||
|
# 转换每个文件 |
||||
|
success_count = 0 |
||||
|
error_count = 0 |
||||
|
|
||||
|
for file_rel_path in files_to_convert: |
||||
|
file_abs_path = os.path.join(project_root, file_rel_path) |
||||
|
|
||||
|
if os.path.exists(file_abs_path): |
||||
|
if convert_file_to_utf8_no_bom(file_abs_path): |
||||
|
success_count += 1 |
||||
|
else: |
||||
|
error_count += 1 |
||||
|
else: |
||||
|
print(f"警告: 文件不存在 - {file_abs_path}") |
||||
|
error_count += 1 |
||||
|
|
||||
|
print("=" * 60) |
||||
|
print(f"转换完成!成功: {success_count}, 失败: {error_count}") |
||||
|
print("所有文件已转换为UTF-8无BOM格式,可以在Linux环境下正常使用。") |
||||
|
|
||||
|
# 让窗口保持打开状态 |
||||
|
input("按Enter键退出...") |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
main() |
||||
Loading…
Reference in new issue