Windows 上的 java println 输出编码

goh*_*goh 3 java windows character-encoding

这个问题源于我在这里提出的一个问题。有人建议这可能是 Java 问题,所以我发布了另一个问题。

什么决定了 system.out.println 命令的输出编码?基本上,我从命令提示符执行一个 python 程序,它生成一个运行 java(stanford parser) 的子进程,它接受以 UTF-8 编码的输入文档,以特定格式处理和打印我的输入。回到 python 程序,我无法使用 utf-8 解码 stdout 的输出。这适用于 OSX,所以我怀疑这可能是控制台编码问题。

我尝试过设置chcp 65001和更改字体类型,但这些不起作用。

McD*_*ell 5

它使用默认编码,在 Windows 上将是过时的“ANSI”编码。改变这一点的记录方法是“通过操作系统”,尽管这只是目前的情况。您还可以调用System.setOut来提供您自己的机制:

System.setOut(new PrintStream(System.out, true, "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解更多深度。

  • 该文档并没有确切说明您应该如何更改编码,只是说它应该在虚拟机之外发生 - 这是一个实现细节,并没有多大帮助。例如,在 Linux 上,它可能使用 $LANG 变量。据我所知,在 Windows 中没有记录的方法可以更改它。Windows 继承了很多遗产。您可以使用代码(参见上文)或通过不受支持的“-Dfile.encoding=UTF-8”系统属性更改 STDOUT 编码。 (2认同)