java - 如何获取控制台字符集?

标签 java console

如何获取控制台(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/

相关文章:

java - 使用 java 写入控制台窗口中的相同位置

c++ - 用于音频输出的简单c++ win控制台程序?

eclipse - 如何让 Eclipse 控制台将文本超链接到源代码文件?

java - H2 数据存储 : how to execute console from Java app?

java - 应该使用哪种布局?

JavaFX 最低要求

java - 正则表达式理解\b

Java数据访问CouchDB : ORM or REST?

用于固定长度记录文件的 Java (ME) 库

c++ - Eclipse CDT 构建控制台输出不显示整个编译器输出