给定 ubuntu(或一般的 debian unix)中的文本文件,我如何找出文件的文件编码?我可以在其上运行od或hexdump以对其编码进行指纹识别吗?我应该注意什么?
2 回答
有很多工具可以做到这一点。尝试在网络上搜索“检测编码”。以下是我找到的一些工具:
Unicode国际化类(ICU) 是一个很好的起点。请特别参阅他们关于字符集检测的页面。
Chardet是一个 Python 模块,用于猜测文件的编码。见 chardet.feedparser.org
*nix 命令行工具文件 检测文件类型,但也可能检测文件中提到的编码(例如,如果文件中有 mime 类型符号)。看
man file
Perl 模块Encode::Detect和 Encode::Guess。
有人在 StackOverflow 中问过类似的问题。搜索问题PHP: Detect encoding and make everything UTF-8。这是在从网上获取文件并使用 PHP 的上下文中,但您可以编写命令行 PHP 脚本。
请注意 ICU 页面关于字符集检测的内容:“字符集检测......,充其量是使用统计和启发式的不精确操作......”根据我的经验,问题域在简单或这份工作很困难。不要忘记文件中的八位位组可能是不明确的编码,即使用多种不同的编码进行合理解释。它们也可以是混合编码,即八位字节的不同子集在不同的编码中解释是有意义的。这就是为什么没有一个我可以推荐的命令行工具总是可以完成这项工作。
如果您有一个文件并且只想将其转换为已知的编码,我的诀窍是使用文本编辑器打开文件,该编辑器可以使用一堆不同的编码进行导入,例如 TextWrangler 或 OpenOffice.org。首先,打开文件,让编辑猜测编码。看看结果。如果您对它不满意,请猜测一个编码,使用指定该编码的编辑器打开文件,然后查看结果。然后另存为已知编码,例如 UTF-16。
你可以使用enca。Enca 是一个用于编码检测和转换的小型命令行工具。
您可以通过以下方式在 debian / ubuntu 上安装它:
apt-get 安装 enca
为了使用它,只需调用
文件名
另请参阅手册页以获取更多信息。