在写代码的时候,常常会遇到字符编码的问题。比如 GBK 编码的代码文件以 UTF-8 编码打开就会造成中文乱码,而且这种情况还很常见,比如 Eclipse 中的 Java 代码和 Visual Studio 中的 C++ 代码都是默认 GBK 编码的。
而大家知道,出于通用性的考虑,最好还是使用 UTF-8 编码。因此这时就需要将 GBK 编码转换为 UTF-8 了。
利用代码转换
用代码来实现转换也是挺简单的事:以 GBK 编码读取文件的内容,再以 UTF-8 编码写入新文件或者覆盖原文件即可。
下面是使用 C# 的示例代码:
var content = File.ReadAllText(currentFile, Encoding.GetEncoding(936)); // 以 GBK 编码读取文件
var utf8Encoding = new UTF8Encoding(bomFlag); // 是否包含 BOM(byte order mark,字节顺序标记)
var path = Path.Combine(output, fileName); // 将输出文件夹的路径与目标文件的文件名组合,获得目标文件的完整路径
var newFileStream = File.Create(path); // 创建目标文件
newFileStream.Close(); // 创建完成后关闭
File.WriteAllText(path, content, utf8Encoding); // 将原文件的内容以 UTF-8 编码写入到目标文件
批量工具
使用代码转换多个文件或者一个文件夹下的文件也是很简单的事,这里就不赘述了。
具体使用时,需要选择一或多个文件,或者选择文件夹。
但是控制台应用程序使用起来也是个麻烦,于是笔者索性做了个小工具,放在 GitHub 仓库里。