IDEA中Project Encoding与File Encoding必须统一为UTF-8,否则编译时中文注释报错;需同步设置Global/Project/Properties编码、javac参数、Maven/Gradle插件编码及控制台字体与终端UTF-8支持。

IDEA 里 project encoding 和 file encoding 必须一致
很多人改了 File Encoding 却没同步改 Project Encoding,结果编译时中文注释报错、javac 提示“非法字符”,其实根本原因是两者不匹配。IntelliJ IDEA 默认用系统编码(Windows 是 GBK),但 Java 源文件应统一用 UTF-8。
-
File → Settings → Editor → File Encodings中,把Global Encoding、Project Encoding、Default encoding for properties files全部设为UTF-8 - 勾选
Transparent native-to-ascii conversion(尤其对.properties文件必要,否则中文会被转成\u4f60\u597d形式) - 已有乱码文件右下角会显示当前编码,点击后选
UTF-8→Reload(不是Convert,否则内容会二次损坏)
编译阶段必须让 javac 识别 UTF-8 源码
IDEA 的 UI 设置只影响编辑和保存,真正编译靠 javac。如果没显式指定编码,javac 会按平台默认编码读取源文件——Windows 下就是 GBK,遇到 UTF-8 文件里的中文就直接报错。
- 在
Settings → Build → Compiler → Java Compiler中,设置Additional command line parameters为-encoding UTF-8 - 如果是 Maven 项目,必须在
pom.xml里声明编译插件编码:
org.apache.maven.plugins maven-compiler-plugin 3.11.0 17 17 UTF-8
注意: 是插件配置项,不是 JVM 参数;漏写会导致 mvn compile 仍用系统编码解析源码。
运行时控制台中文乱码的根源不在编码设置本身
即使源码、编译都用了 UTF-8,控制台输出仍是方块或问号——这通常不是编码配置问题,而是终端/IDE 控制台字体不支持中文,或未启用 UTF-8 模式。
立即学习“Java免费学习笔记(深入)”;
- Windows CMD 默认不支持 UTF-8,需先执行
chcp 65001切换代码页(但 IDEA 内置 Terminal 可能不响应该命令) - 更可靠的方式:在
Run → Edit Configurations → Environment variables中添加JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 - 同时确认
Settings → Tools → Terminal → Shell path使用的是支持 UTF-8 的终端(如 Windows Terminal + PowerShell,而非 cmd.exe)
Gradle 项目要额外处理 gradle.properties 和 JVM 启动参数
Gradle 构建链更长,编码问题可能出现在三个地方:Groovy 脚本解析、Java 编译、JVM 运行时。只改 IDEA 设置或 build.gradle 不够。
- 在项目根目录的
gradle.properties中添加:org.gradle.jvmargs=-Dfile.encoding=UTF-8 -
build.gradle中显式配置 Java 插件:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
compileJava {
options.encoding = "UTF-8"
}
compileTestJava {
options.encoding = "UTF-8"
}
Gradle 6.0+ 后,options.encoding 必须显式设置,否则继承自 JVM,默认值不可靠。
gradle.properties 里的 org.gradle.jvmargs 和 IDEA 中 Transparent native-to-ascii conversion 的配合——这两处一旦遗漏,.properties 文件里的中文几乎必然出问题。










