背景
代码文件中包含中文注释且文件编码是gb2312,存在需要将其转换为UTF8-BOM(或者UTF-8)。
本以为这个转换跟简单,结果找了几款小工具,批量转换后,中文变成乱码;Linux 下的iconv 也能转换编码,但感觉它也存在不便之处:1,本身只能支持单个文件文件,要批量转需要写脚本;2,如果是win10还需要配合cygwin或者wsl,因为它是linux下的命令。发现notepad++可以转换单个文件且转换完后无乱码,最终选择它来实现批量转换。
参考文章
网上其实有不少相关文章,如下。但实际操作后,略有一点不同。故记录一下。
详细步骤
-
安装Python Script 插件。运行notepad++ 打开插件 --> 插件管理器 --> 显示插件管理
注:大部分文章第一步是安装notepad++插件管理器,实际上无需安装。notepad++当前版本为7.9。
- 搜索并安装: Python Script,然后依照提示,重启notepad++
- 安装完成后,新建脚本。选择插件 --> python --> 脚本新建脚本。这里取名为convertToUTF-8-BOM.py,内容如下:
import os
import sys
# Path to the folder with files to convert
dir_to_convert = "E:\\repository\\your-actual-dir-to-convert"
for root, dirs, files in os.walk(dir_to_convert):
for file in files:
if file[-4:] == '.cpp' or file[-2:] == '.h': # Specify type of the files
notepad.open(root + "\\" + file)
notepad.runMenuCommand("Encoding", "Convert to UTF-8-BOM")
notepad.save()
notepad.close()
注:
1,dir_to_convert设置成你的实际路径。
2,我这里是转换一个c++项目的文件编码,所以文件扩展名是.cpp和.h。依照你的实际需求设置文件扩展名。
3,此处是转换成UTF-8-BOM,也可以转换成UTF-8。
- 运行此脚本。插件-->Python Script-->Scripts-->ConvertoToUTF-8-BOM
注:
1,网上有文章说,运行此脚本时,要将notepad++设置成英文界面。实测下来无需切换英文,保持中文界面也可运行。
2,实测发现:如果将脚本中的"Encoding"、"Convert To UTF-8-BOM"写成中文,脚本不会运行;如果脚本文件中的注释包含中文,或者路径中包含中文,脚本也不运行;
运行完成后,即可成功转换文件编码。