在咱项目里面,大家是否有关注过文件的编码,一个文件是作为 Ascii 编码保存的,还是作为 GBK 编码保存的,还是 UTF8 编码保存的?不同的编码是否对应用有影响?其实是会有影响的,在 C# 里面的字符串常量等都会受到文件编码的影响。例如我的应用主输出是 UTF8 编码,此时我在二进制可执行文件里面保存的输出字符串的二进制是采用 GBK 编码的内容,在一些用户的设备上也许就会显示出乱码 本文来安利大家一个 dotnet 工具,这个工具可以用来协助大家找到项目里面的编码不规范文件
本文告诉大家的这个工具的源代码在 GitHub 完全开源,这个开源仓库是一个古老的仓库,核心功能是提供给 VisualStudio 插件,用于扫整个项目里面的所有文件,尝试找到所有编码不规范的文件。而本文只是用到这个仓库里面的 dotnet tool 工具
仓库请看 dotnet-campus/EncodingNormalior: 规范化文件编码。Make the file’s encoding standard.
在使用之前,请使用下面代码安装或更新工具
代码语言:javascript复制dotnet tool install -g dotnetCampus.EncodingNormalior
安装完成工具之后,可以采用如下命令使用工具
代码语言:javascript复制EncodingNormalior -f E:lindexiEncodingNormalior
上面命令的 E:lindexiEncodingNormalior
就是需要扫编码规范的文件夹,使用这个命令可以将这个文件夹里面的所有文本文件扫一次,如果有文件不符合规范的,将会输出出来
如果大家期望使用这个工具自动转换文件编码,此时可以添加 --TryFix true
参数,如下面命令
EncodingNormalior -f E:lindexiEncodingNormalior --TryFix true
需要说明的是现在没有一个算法能够准确了解一个没有带编码BOM的文件的编码,因此加上了自动转换文件编码参数之后,工具将会按照自己认为的编码去读取文件,然后再次写入,也许会让文件乱码
更多关于这个命令行的使用方法,还请大家到开源仓库 https://github.com/dotnet-campus/EncodingNormalior