我知道 UTF 文件具有用于确定编码的 BOM,但是其他不知道如何猜测该编码的编码呢?
我是新的java程序员。我已经编写了使用 UTF BOM 猜测 UTF 编码的代码。但我对其他编码有疑问。我怎么猜他们。
任何人都可以帮助我吗?提前致谢。
简短的回答是:你不能。
即使在 UTF-8 中,BOM 也是完全可选的,通常建议不要使用它,因为许多应用程序无法正确处理它,只是将其显示为可打印的字符。字节顺序标记的最初目的是说明 UTF-16 文件的字节顺序。
这就是说,大多数处理 Unicode 的应用程序都实现了某种猜测算法。阅读文件的开头并查找某些签名。
如果您不知道编码并且没有任何指示符(如 BOM),则并不总是可以准确“猜测”编码。存在一些可以给你提示的指针。
例如,一个 ISO-8859-1 文件(通常)没有任何 0x00 字符,但是一个 UTF-16 文件有它们的负载。
最常见的解决方案是如果您无法检测到编码,则让用户选择它。