可以使用 file
命令,并添加 -i
或 --mime
参数来查看一个文件的字符编码,但是这种查看编码的方式并不是准确,比如我在 CentOS7.3 测试的时候它把 GBK 编码的文件识别成了 ISO8859-1,所以最好是自己明白文件的原始编码。
使用命令行工具将使用某种字符编码的文件转化为另一种编码,在 Linux 中,命令行工具 iconv
用来将使用一种编码的文本转化为另一种编码。查看 iconv 工具支持的编码:
1 | iconv -l |
这个工具使用起来很简单,比如我把原本为 GBK 编码的 HttpServer.cpp 转为 UTF-8 编码的 HttpServer_UTF8.cpp:
1 | iconv -f gbk -t utf-8 HttpServer.cpp -o HttpServer_UTF8.cpp |
当然如果需要转换多个文件的时候可能就需要 Shell 脚本来完成咯!
如果输出编码后面添加了 //IGNORE
字符串,那些不能被转换的字符将不会被转换,并且在转换后,程序会显示一条错误信息。
如果字符串 //TRANSLIT
被添加到了上面例子中的输出编码之后 (UTF-8//TRANSLIT
),待转换的字符会尽量采用形译原则。也就是说,如果某个字符在输出编码方案中不能被表示的话,它将会被替换为一个形状比较相似的字符:
1 | iconv -f gbk -t utf-8//TRANSLIT HttpServer.cpp -o HttpServer_UTF8.cpp |
如何在 C 语言中使用转码呢?下面是一个使用示例:
1 |
|
gcc 编译器默认字符集就是 UTF-8,如果你不想修改源文件的编码的时候可以修改编译参数:
1 | -finput-charset=charset 用于指定源码字符集 |