如何解决如何获得控制台字符集?
| 如何获取控制台(Windows,Linux Shell或Eclipse控制台输出中的cmd.exe)字符集编码? “ 0”似乎仅用于输入/输出文件,而不用于控制台。解决方法
通常,您必须询问外壳当前用于显示字符的字符集。
猜测不知道:Java中没有标准的方法,因为(我想)控制台没有报告标准字符集的标准。我们必须检测实际的操作系统或控制台提供程序(eclipse,...),并使用它们的特定功能来获取实际字符集的名称。
, 没有标准化的方法可以从系统中获取该信息。通常,它将是平台的默认编码,但是正如您所注意到的,不一定是这种情况(据我所知,它没有记录在案)。
您可以走丑陋的路线,并使用反射来找出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语言环境。
, 从JDK 1.1开始,您可以使用System out字段构造一个OutputStreamWriter,然后调用getEncoding()。
OutputStreamWriter osw = new OutputStreamWriter(System.out);
System.out.println(osw.getEncoding());
, 假设您正在使用IDE,可能要问一下您的IDE。如果您不是,则无论您的shell使用什么。如果您恰好正在使用eclipse,它将与\“ project characterset \”相同,您可以通过右键单击项目,属性和资源->文本文件编码来查找/更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。