说明
先说明我的VSCODE已经安装了Package for Java的全套插件和 Code Runner插件,环境也已经是配好了的。
我之前已经运行了许多c代码,也没有中文乱码的问题。
问题
/*
* @Author: poorjack
* @Date: 2021-10-07 23:49:55
* @LastEditTime: 2021-10-08 01:00:28
* @LastEditors: poorjack
* @Description:
* @FilePath: \code2021\LinkedList.java
* 内卷要开始加速了( •̀ ω •́ )✧
*/
public class LinkedList {
public static void main(String[] args) {
System.out.println("Hello World! 你好");
}
}
这是输出
[Running] cd "f:\WORKSPACE\VSCode\LEARN\code2021\" && javac LinkedList.java && java LinkedList
LinkedList.java:8: ����: ���� GBK �IJ���ӳ���ַ� (0x80)
* 内卷要开始加速了( •�? ω •�? )�?
^
LinkedList.java:8: ����: ���� GBK �IJ���ӳ���ַ� (0x81)
* 内卷要开始加速了( •�? ω •�? )�?
^
LinkedList.java:8: ����: ���� GBK �IJ���ӳ���ַ� (0xA7)
* 内卷要开始加速了( •�? ω •�? )�?
^
3 ������
[Done] exited with code=1 in 0.796 seconds
可以看到,代码编译失败了的,没有运行,只有报错。
一些解决方案
一些老哥认为是Vscode Terminal的问题,就是VSCODE虽然可以设置多个终端,比如cmd,powershell,wsl等,但是代码运行输出好像还是cmd,而cmd的默认编码是gkb。编码不同,就会产生乱码。
一些热门的帖子就是这样做的,也有很多人解决了问题:
改变CMD的编码格式的帖子
问题是:
- VSCODE还在快速更新,配置语法会变化
- 不是所有人都能成功
从code runner入手
在学java时,一般就会遇到一些乱码问题:
解决java命令运行时乱码的帖子
-encoding utf-8就是在编译前对文件用utf-8重新编码。
而code runner就是帮我们自动地在命令行输入这些编译和运行的代码,如果能把-encoding utf-8加入这些命令就可以了。
在settings.json里配置
在用户的json文件添加:
"code-runner.executorMap": {
"java": "cd $dir && javac -encoding utf-8 $fileName && java $fileNameWithoutExt",
},
看看效果
[Running] cd "f:\WORKSPACE\VSCode\LEARN\code2021\" && javac -encoding utf-8 LinkedList.java && java LinkedList
Hello World! ���
[Done] exited with code=0 in 1.021 seconds
成功输出,但是输出了乱码。
在改为如下:
"code-runner.executorMap": {
"java": "cd $dir && javac -encoding utf-8 $fileName && java -Dfile.encoding=UTF-8 $fileNameWithoutExt",
},
支持原创,多多点赞
补充:
Java还有第三种乱码,就是编译报错时,会有乱码。
而且以上方法不能解决。
很多老哥的办法时选择
设置runInTerminal,就是不在OUTPUT里输出。
这不仅影响Java,还影响其他语言。