先确认文件真实编码为GBK,再Reopen with Encoding→GBK验证,随后Save with Encoding→utf8转码;终端乱码需设JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8;项目级配置须含"files.encoding":"utf8"和"java.configuration.compilerArgs":["-encoding","UTF-8"]。

VSCode里Java中文乱码,90%不是JVM或代码问题,而是编辑器、终端、编译器三者编码没对齐。先别改System.out.println,从文件读取源头开始查。
右下角显示UTF-8,但打开.java文件中文是方块?
这说明文件实际是GBK(Windows上常见为CP936),VSCode却用UTF-8去解码——字节流错位,自然显示异常。
- 先点右下角
UTF-8→ 选Reopen with Encoding→ 找GBK(不是GB2312,兼容性更好);如果中文立刻恢复,就坐实了编码 mismatch - 确认后,再点右下角
GBK→Save with Encoding→ 选utf8(注意全小写、无BOM、无短横);这一步才真正把磁盘文件重写成UTF-8 -
"files.autoGuessEncoding": false必须加进settings.json,否则VSCode会悄悄用GBK重载老文件,你根本不知道它“猜错了”
终端运行java YourClass还是乱码?
和编辑器设置完全无关。这是Windows终端代码页(chcp返回936)与JVM输出编码不一致导致的:JVM默认按系统代码页解码System.out字节流,但终端当前只认UTF-8字节。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 临时验证:在集成终端里先执行
chcp 65001,再java YourClass;如果好了,就是代码页问题 - 永久生效:在
settings.json里加"terminal.integrated.env.windows": { "JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8" } - 别只设
CHCP=65001:它只影响终端输入/显示,不影响JVM内部字符串编码逻辑;JAVA_TOOL_OPTIONS才是让JVM全程用UTF-8处理IO的关键
点击VSCode运行按钮(▶️)输出乱码?
这个按钮本质是调用java命令+类路径,但绕过了你手动输的chcp,所以必须靠项目级配置兜底。
立即学习“Java免费学习笔记(深入)”;
- 在项目根目录
.vscode/settings.json中加这两项:"files.encoding": "utf8"和"java.configuration.compilerArgs": ["-encoding", "UTF-8"] - 前者确保
javac读源码时用UTF-8,后者强制javac编译时也用UTF-8生成字节码——否则即使源码是UTF-8,javac仍可能按系统默认(GBK)解码字符串字面量 - 如果用了Maven,还得在
pom.xml里补一句:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>,否则maven-compiler-plugin会忽略IDE设置
最容易被忽略的是:Save with Encoding → utf8之后,必须关掉文件再重新打开,VSCode才真正以新编码加载;否则编辑器缓存还在用旧解码逻辑,你以为修好了,其实没生效。


















