3

我面临一个问题。

文件可以用某种编码编写,例如UTF-8, UTF-16,UTF-32等。

当我读取UTF-16文件时,我使用以下代码:

 BufferedReader in = new BufferedReader(
                           new InputStreamReader(
                           new FileInputStream(file), "UTF16"));

在读取文件之前如何确定文件的编码?

当我使用读取UTF-8编码文件时,UTF-16我无法正确读取字符。

4

3 回答 3

2

没有好的方法可以做到这一点。您要问的问题就像通过查看数字来确定数字的基数。例如, 的基数是101多少?

最好的解决方案是将数据读入字节数组。然后你可以使用String(byte[] bytes, Charset charset)用多种编码来测试它,最有可能是最不可能的。

于 2012-05-20T00:22:47.407 回答
0

您可以读取前几个字节并尝试猜测编码。

如果所有其他方法都失败了,请尝试使用不同的编码进行读取,直到其中一种可以正常工作(解码时也不例外,并且“看起来”还可以)。

于 2012-05-19T19:30:17.730 回答
0

你不能。应用哪种转换格式通常由文件的前四个字节决定(假设是 BOM)。你不能从外面看到那些。

于 2012-05-19T19:12:50.583 回答