如何确定文本编码

时间:2010-07-09 10:20:19

标签: java utf

我知道UTF文件有用于确定编码的BOM但是其他编码有什么用 不知道如何猜测编码。

我是新的java程序员。 我编写了使用UTF BOM猜测UTF编码的代码。 但我有其他编码的问题。我怎么猜他们。

任何人都可以帮助我吗? 提前致谢。

3 个答案:

答案 0 :(得分:4)

此问题与several previous ones重复。至少有两个Java库试图猜测编码(尽管记住100%的时间无法猜测)。

当然,如果您知道编码只是三个或四个选项中的一个,那么您可以编写更准确的猜测算法。

答案 1 :(得分:0)

简短的回答是:你做不到。

即使在UTF-8中,BOM也完全是可选的,并且通常建议不要使用它,因为许多应用程序无法正确处理它,只是将其显示为可打印的字符。 Byte Order Markers的最初目的是告诉UTF-16文件的字节顺序。

这就是说,大多数处理Unicode的应用都实现了某种猜测算法。阅读文件的开头并查找某些签名。

答案 2 :(得分:0)

如果您不知道编码并且没有任何指标(如BOM),则无法准确“猜测”编码。存在一些可以给你提示的指针。

例如,ISO-8859-1文件(通常)不会有任何0x00字符,但是UTF-16文件会加载它们。

最常见的解决方案是让用户在无法检测时选择编码。