Java系统输出的编码仅在Visual Studio代码中出现问题。
我的程序很简单:
public class Main {
public static void main(final String[] args) {
System.out.println("Příliš žluťoučký kůň úpěl ďábelské ódy");
}
}
但输出如下所示:
第一个月
我的文件采用UTF-8编码,并且正在使用-Dfile.encoding=UTF-8
标志进行编译。我在Visual Studio代码中使用的是Microsoft的官方Java扩展包。
4条答案
按热度按时间rslzwgfq1#
由于你已经安装了“Java扩展包”,并且提到了“-Dfile.encoding=UTF-8”,所以,你是通过“Debugger for Java”扩展进行调试的。这导致了我想重现你的问题的失败。
我试着编辑终端的编码,通过task.json,或者在settings.json中添加“terminal.integrated.shellArgs.windows“:["/K”,“chcp 65001”],但是两者都不起作用。
当然,“Debugger for Java”扩展将打开一个新的终端来执行命令,因为上面的设置不会对该终端产生影响。
所以,我可以重现你的问题这一次,因为我打开“launcher.bat”文件,这显示在命令,并改变代码-〉“chcp.com 65001〉NUL”在它.任何其他数量的chcp.com将导致你的问题.
所以,也许,这能给你一些启发。
u2nhd7ah2#
vscode与原始的“javac,java”命令不同,因为vscode依赖于扩展来执行这些命令。
通过“RedHat对Java(TM)的语言支持”扩展将.java文件编译为. class文件,并自定义添加“-encoding utf8”参数。
通过“Debugger for Java”扩展将终端“chcp”更改为“65001”,并使用“-Dfile.encoding=UTF-8 "确保JVM以编码”utf8“启动。
你可以通过添加环境变量达到同样的效果:“JDK_JAVAC_OPTIONS”:“-编码utf8”、“JDK_JAVA_OPTIONS”:“-D文件.编码=UTF-8”和“chcp 65001 "临时更改终端编码。
这是非常复杂和奇怪的,因为我不能确定什么是'java','javac'默认编码,我已经尝试了很多,但仍然困惑,因为我谷歌了很多,但不能得到足够的信息。但一切都包括在这三个变量,我希望这能为您提供一些有用的信息,我太累了。对不起...
cnjp1d6j3#
对于代码运行器扩展,只需将此代码添加到用户设置json中:
t1rydlwq4#
我也遇到过类似的问题。我的环境有点复杂。我同时使用“Code-Runner”和“Java-extensionPack”。这似乎让我更难解决这个问题。
经过几次尝试,我发现下面的事情。
1.当我使用运行图标(在右上方),'代码运行者' compine和运行我的代码在“输出”,这显示破碎的朝鲜字符。
1.当我使用“运行〉调试”或“运行〉运行而不调试”时,“Java扩展包”在“TERMINAL”中编译并运行我的代码,它正确地显示了韩文字符。
下面是我的最终设置。
A.工作区中的settings.json
B.用户中的settings.json
"java.jdt.ls.vmargs": "-Dfile.encoding=utf-8"
"code-runner.runInTerminal": true
设置后,代码运行人员可以在“TERMINAL”(而不是“OUTPUT”)中很好地打印韩文字符,“java扩展包”也可以。