如何获取控制台(windows、linux shell 或eclipse 控制台输出中的cmd.exe)字符集编码?
java.nio.charset.Charset.defaultCharset()
似乎只适用于输入/输出文件,不适用于控制台。
最佳答案
没有从系统中获取该信息的标准化方法。 通常这将是平台默认编码,但正如您所注意到的,情况不一定如此(据我所知,没有记录在案)。
您可以走丑陋的路线并使用反射来找出 Java 使用的编码。以下代码完全不可移植,并且仅经过验证可在一个特定版本的 OpenJDK 上运行,它是实验性的,不用于生产:
final Class<? extends PrintStream> stdOutClass = System.out.getClass();
final Field charOutField = stdOutClass.getDeclaredField("charOut");
charOutField.setAccessible(true);
OutputStreamWriter o = (OutputStreamWriter) charOutField.get(System.out);
System.out.println(o.getEncoding());
这会在我的系统上打印出 UTF8
[sic],这并不奇怪,因为我在 Linux 机器上使用的是 UTF-8 语言环境。
关于java - 如何获取控制台字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172972/