Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS代码Java系统输出编码_Java_Visual Studio Code_Encoding - Fatal编程技术网

VS代码Java系统输出编码

VS代码Java系统输出编码,java,visual-studio-code,encoding,Java,Visual Studio Code,Encoding,我对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"); } } 但输出如下所示: přílišžluťoučkýků328; pělďábelskédy�阿拉贝尔

我对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");
    }
}
但输出如下所示:

přílišžluťoučkýků328; pělďábelskédy�阿拉贝尔斯科蒂�dy

我的文件具有UTF-8编码,并且正在使用
-Dfile.encoding=UTF-8
标志编译。我在Visual Studio代码中使用Microsoft的官方Java扩展包,因为您安装了“Java扩展包”,并提到“-Dfile.encoding=UTF-8”,所以,您正在通过“Java调试器”扩展进行调试。这就是我想重复你的问题失败的原因

我试图通过task.json或在settings.json中编辑terminal的编码。json添加了“terminal.integrated.shellArgs.windows”:[“/K”,“chcp 65001”],但两者都不起作用

当然,这是因为“Java调试器”扩展将打开一个新的终端来执行命令,因为上面的设置不会对该终端产生影响

因此,这次我可以重复您的问题,因为我打开了命令中显示的“launcher.bat”文件,并更改其中的代码->“chcp.com 65001>NUL”。任何其他号码的chcp.com都会导致您的问题

因此,这可能会给您一些启示。

因为您安装了“Java扩展包”,并提到“-Dfile.encoding=UTF-8”,所以,您正在通过“Java调试器”扩展进行调试。这就是我想重复你的问题失败的原因

我试图通过task.json或在settings.json中编辑terminal的编码。json添加了“terminal.integrated.shellArgs.windows”:[“/K”,“chcp 65001”],但两者都不起作用

当然,这是因为“Java调试器”扩展将打开一个新的终端来执行命令,因为上面的设置不会对该终端产生影响

因此,这次我可以重复您的问题,因为我打开了命令中显示的“launcher.bat”文件,并更改其中的代码->“chcp.com 65001>NUL”。任何其他号码的chcp.com都会导致您的问题


因此,这可能会给您一些启示。

vscode与您最初的“javac,java”命令不同,因为vscode依赖于扩展来执行这些命令

通过“Red Hat对Java(TM)的语言支持”扩展名compile“.Java”文件到“.class”,它定制了添加“-encoding utf8”参数

通过“Java调试器”扩展将终端“chcp”更改为“65001”,并通过“-Dfile.encoding=UTF-8”确保JVM以编码“utf8”开始

您可以通过添加环境变量来实现相同的效果: “JDK_JAVAC_选项”:“-编码utf8”, “JDK_JAVA_选项”:“-Dfile.encoding=UTF-8”, 和“chcp 65001”临时更改终端编码


这是非常复杂和奇怪的,因为我不能确定什么是“java”,“javac”默认编码,我尝试了很多,但仍然很困惑,因为我搜索了很多,但无法获得足够的信息。但是这三个变量包含了所有的东西,我希望这能给你提供一些有用的信息,我太累了。抱歉…

vscode与原始的“javac,java”命令不同,因为vscode依赖于扩展来执行这些命令

通过“Red Hat对Java(TM)的语言支持”扩展名compile“.Java”文件到“.class”,它定制了添加“-encoding utf8”参数

通过“Java调试器”扩展将终端“chcp”更改为“65001”,并通过“-Dfile.encoding=UTF-8”确保JVM以编码“utf8”开始

您可以通过添加环境变量来实现相同的效果: “JDK_JAVAC_选项”:“-编码utf8”, “JDK_JAVA_选项”:“-Dfile.encoding=UTF-8”, 和“chcp 65001”临时更改终端编码


这是非常复杂和奇怪的,因为我不能确定什么是“java”,“javac”默认编码,我尝试了很多,但仍然很困惑,因为我搜索了很多,但无法获得足够的信息。但是这三个变量包含了所有的东西,我希望这能给你提供一些有用的信息,我太累了。抱歉…

对于代码运行程序扩展,只需将此代码添加到用户设置json:

"code-runner.executorMap":{"java": "cd $dir && javac -encoding utf-8 $fileName && java $fileNameWithoutExt",},
"code-runner.runInTerminal": true,

对于代码运行程序扩展,只需将此代码添加到用户设置json:

"code-runner.executorMap":{"java": "cd $dir && javac -encoding utf-8 $fileName && java $fileNameWithoutExt",},
"code-runner.runInTerminal": true,

您好,谢谢您的回复!在我的“launcher.bat”文件中,我已经将编号设置为65001,但它仍然不能正常工作。在java进程控制台中,运行代码后,能否键入chcp以确认控制台的编码类型?你能把vscode留在cmd中运行这个类吗?我是说javac,然后是java,来确认它是否工作?并尝试chcp 65001,以确认其是否有效?你知道,只有三种可能,你的文件编码,终端编码,你的计算机编码问题,我想不出任何其他条件。运行我的代码后,控制台会打印:C:\Users\username\program>C:\Users\username\.vscode\extensions\vscjava.vscode-java-debug-0.25.1\scripts\launcher.bat“C:\Program Files\AdoptOpenJDK\jdk-11.0.6.10-hotspot\bin\java.exe“-Dfile.encoding=UTF-8-cp C:\Users\username\AppData\Roaming\Code\User\workspaceStorage\027E691179A119970FC375CC4C4FC26F8F\redhat.java\jdt\u ws\hellow\u a2fe7d28\bin Main如果我用java和java编译我的程序Classicali,Windows CMD中的输出具有正确的编码。对不起,我是周末,请打开一个新的CMD并键入chcp,检查它是否为65001,最好将您的电脑编码设置为UTF-8。因为我遇到了你描述的问题,因为上次我测试一切正常,所以,我做了一些调查。嗨,谢谢你的回复!在我的“launcher.bat”文件中,我已经将编号设置为65001,但它仍然不能正常工作。在java进程控制台中,运行代码后,能否键入chcp以确认控制台的编码类型?你能离开vs吗