Java:如何确定流的正确字符集编码

Java:如何确定流的正确字符集编码

关于以下线程:Java应用程序:无法正确读取iso-8859-1编码的文件

以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么?

我尝试使用以下方法:

File in =  new File(args[0]);InputStreamReader r = new InputStreamReader(new FileInputStream(in));System.out.println(r.getEncoding());

但是在我所知道的用ISO 8859_1编码的文件上,上面的代码会产生ASCII,这是不正确的,并且不允许我将文件的内容正确地呈现回控制台。


MM们
浏览 1149回答 3
3回答

杨__羊羊

无法确定任意字节流的编码。这就是编码的本质。编码是指字节值与其表示之间的映射。所以每一个编码“可能”都是正确的。这个getEncode()方法将返回设置的编码(读取JavaDoc)小溪。它不会猜到你的编码。有些流告诉您使用了哪种编码来创建它们:XML、HTML。但不是任意字节流。无论如何,如果有必要的话,你可以自己猜一个编码。每种语言对每个字符都有一个共同的频率。在英语中,字符经常出现,但却很少出现。在ISO-8859-1流中,通常没有0x00字符。但是一条UTF-16流有很多。或者:你可以问用户。我已经看到了一些应用程序,它们以不同的编码方式呈现出文件的片段,并要求您选择“正确的”代码段。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java