我想确保大型项目存储库中的所有文件都以 UTF-8 正确编码。是否有工具可以实现这一点,或者可以使用 unix 工具来实现这一点?
答案1
总体而言,没办法来做到这一点。UTF-8 没有“魔法数字”或标记,因此您只能证明文件不是 UTF-8(如果它包含无效序列),但不能证明它是。
不过,您可以使用启发式方法。具体方法取决于您的数据。
一个想法:
- 列出所有包含非 ASCII 字符的文本文件。第二部分使用 perl 或类似程序即可轻松完成;第一部分取决于您拥有的文件。Unix 也会
file
检查非 ASCII 字符,但不太可靠(仅检查文件开头)。 - 如果列表很小,请手动检查文件。否则,请检查哪些是有效的 UTF-8(再次说明,perl 有用于此目的的模块,或者使用类似
iconv
或 的工具recode
)。有效的 UTF-8 文件是大概好的。其余的必须手动检查(除非您确切知道它们是如何编码的)。