现在有一个文件,编码格式未知,使用基于 libmagic 的工具检测出来的编码结果都是 iso-8859-1
,但是通过 iconv
将这个文件从 iso-8859-1
转换到 utf-8
后得到的结果都包含乱码。
如果使用图形化的编辑器编辑这个文件的话,显示的文件编码为 gb18030
,而且显示结果也是正常没有乱码的。
那么怎么样使用命令行工具识别这个文件的编码呢?
使用 enca 检测文件编码:
$ enca -L chinese Test.cs
输出如下:
Unrecognized encoding
使用 uchardet 检测:
$ uchardet Test.cs
输出如下:
WINDOWS-1252
Linux 下用 file -i file_name
Result: log.txt: text/plain; charset=us-ascii
file 是基于 libmagic 实现的,无法识别我的这个文件。
试试 uchardet ,https://github.com/BYVoid/uchardet
# apt-get install uchardet libuchardet-dev
# uchardet RedisClient.cs
UTF-8
uchardet 会把 GB18030 识别为 WINDOWS-1252 ,这是 uchardet 的一个bug ,详见 https://github.com/BYVoid/uchardet/issues/23