给定ubuntu中的文本文件(或一般的debian unix),如何找出文件的文件编码?我可以在其上运行 od 或 hexdump 来指纹编码吗?我应该注意什么?
答案 0 :(得分:1)
有很多工具可以做到这一点。尝试通过网络搜索“检测编码”。以下是我找到的一些工具:
国际化Unicode类(ICU)是一个很好的起点。请参阅Character Set Detection上的页面。
Chardet 是一个猜测编码的Python模块 一个文件。见chardet.feedparser.org
* nix命令行工具文件检测文件类型,但如果在文件中提到,也可能检测到编码(例如,如果有mime类型表示法)
文件)。请参阅man file
Perl模块编码::检测和编码::猜测。
有人在StackOverflow中提出了类似的问题。搜索问题, PHP:检测编码并将所有内容设为UTF-8 。这是在从网络中获取文件并使用PHP的上下文中,但您可以编写命令行PHP脚本。
请注意ICU页面关于字符集检测的内容:“字符集检测最多是使用统计和启发式算法的不精确操作......”根据我的经验,问题域在工作是多么容易或困难。不要忘记,文件中的八位字节可能是模糊的编码,即使用多种不同的编码进行合理解释。它们也可以是混合编码,即八位字节的不同子集在不同的编码中有意义解释。这就是为什么没有一个我可以推荐的命令行工具,它总能完成这项工作。
如果您只有一个文件并且只想将其转换为已知编码,我的诀窍是使用文本编辑器打开文件,该编辑器可以使用一堆不同的编码进行导入,例如TextWrangler或OpenOffice.org。首先,打开文件,让编辑器猜测编码。看看结果。如果您对此不满意,请猜测编码,使用指定编码的编辑器打开文件,然后查看结果。然后保存为已知编码,例如UTF-16。
答案 1 :(得分:0)
您可以使用enca。 Enca是一个用于编码检测和转换的小型命令行工具。
您可以通过以下方式在debian / ubuntu上安装它:
apt-get install enca
要使用它,只需致电
enca FILENAME
另请参阅manpage了解详情。