参考以下线程: Java App:无法正确读取iso-8859-1编码文件
以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么?
我尝试过使用以下内容:
File in = new File(args[0]);
InputStreamReader r = new InputStreamReader(new FileInputStream(in));
System.out.println(r.getEncoding());
Run Code Online (Sandbox Code Playgroud)
但是在我知道用ISO8859_1编码的文件中,上面的代码产生了ASCII,这是不正确的,并且不允许我正确地将文件的内容呈现回控制台.
有人知道是否有一种简单的方法来检测Java中的字符集编码?在我看来,某些程序能够检测给定数据使用哪个字符集,或至少进行近似.
我认为底层机制必须解码每个字符集中的数据并选择具有最少未定义字符的那个,然后是哪个字符集更常见以打破平局.
有任何想法吗?
我有一个Java程序在外部进程中运行msinfo32.exe(系统信息),然后读取msinfo32.exe生成的文件内容.当Java程序将文件内容加载到String中时,String字符是不可读的.要使String可读,我必须使用String(byte [] bytes,String charsetName)创建String,并将charsetName设置为UTF-16.但是,当在Windows2003的一个实例上运行时,只有UTF-16LE(小端)会产生可打印的字符串.
我怎样才能提前知道要使用哪种字符编码?
此外,任何有关该主题的背景信息将不胜感激.