如何获得控制台字符集?

tmp*_*tmp 8 java console

如何获取控制台(windows,linux shell或eclipse控制台输出中的cmd.exe)charset编码? java.nio.charset.Charset.defaultCharset()似乎只适用于输入/输出文件,而不是控制台.

And*_*s_D 1

一般来说:您必须询问 shell当前使用什么字符集来显示字符。

猜测不知道:Java 中没有标准方法,因为(我猜)控制台没有报告实际字符集的标准。我们必须检测实际的操作系统或控制台提供程序(eclipse,...)并使用它们的特定功能来获取实际字符集的名称。

  • 实际上,Java 检测 System.console() 的控制台编码,但没有导出的功能来检索它。JMH通过反射进行了黑客攻击:http://hg.openjdk.java.net/code-tools/jmh/file/0797222e066e/jmh-core/src/main/java/org/openjdk/jmh/util /Utils.java#l179 (4认同)