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