IDEA 启动时需配置 -Dfile.encoding=UTF-8 并重启,同时统一设置 Global/Project/Properties 编码为 UTF-8,勾选透明转换,右下角手动重载或转换文件编码,检查 Run Configuration 和 Terminal 的编码继承与 Shell 层级 UTF-8 支持。

IDEA 启动时就加载 UTF-8,别等乱码了再改
IntelliJ IDEA 默认不强制使用 UTF-8,尤其在 Windows 上常 fallback 到 GBK,导致 System.out.println("中文") 在控制台显示为 ??? 或方块。这不是运行时能靠 file.encoding 临时补救的问题,得从启动源头堵住。
实操建议:
- 打开
Help → Edit Custom VM Options...(首次会提示创建),添加一行:-Dfile.encoding=UTF-8 - 这个选项会在 JVM 启动前生效,影响整个 IDE 进程,包括内置终端、编译器、甚至 Maven/Gradle 子进程
- 改完必须重启 IDEA,否则无效——很多人改了不重启,以为没用
- 注意:不要写成
-Dfile.encoding=utf-8(小写),某些旧版 JDK 对大小写敏感,推荐统一用大写UTF-8
项目编码设置必须和文件实际编码一致
即使 VM 选项设了 UTF-8,如果项目里 .java 文件本身是 GBK 编码保存的,IDEA 仍会按声明的编码读取,结果还是乱码——你看到的是“解码错”,不是“输出错”。
实操建议:
- 进
File → Settings → Editor → File Encodings(macOS 是IntelliJ IDEA → Preferences) - 把
Global Encoding、Project Encoding、Default encoding for properties files全部设为UTF-8 - 勾选
Transparent native-to-ascii conversion(对.properties文件必需,否则中文会被转成\u4f60\u597d) - 关键一步:点击右下角编码栏(如显示
GBK),选Reload as UTF-8或Convert to UTF-8——前者是“重新解释现有字节”,后者是“按原编码读,再存为 UTF-8”,选错会导致中文变问号
控制台输出乱码?检查 Run Configuration 的编码继承
即使上面都对了,运行单个类时控制台还乱码,大概率是 Run Configuration 没继承全局编码,或者被脚本覆盖。
实操建议:
- 点右上角运行配置 →
Edit Configurations...→ 左侧选中你的Application - 展开
Environment,确认没有手动设置file.encoding=GBK类似变量 - 在
Configuration标签页,检查Encoding下拉框是否为UTF-8(它默认继承 Project Encoding,但有时会意外变成Default) - 如果你用 Maven 执行
spring-boot:run,记得在Run Configuration → Runner → Environment variables里加MAVEN_OPTS=-Dfile.encoding=UTF-8
终端(Terminal)乱码?那是 Shell 层级问题
IDEA 底部 Terminal 显示中文乱码,和 Java 编码无关,是 Windows CMD/PowerShell 或 Linux shell 的字符集没切到 UTF-8。
实操建议:
- Windows 用户:进
Settings → Tools → Terminal,把Shell path改成cmd.exe /k chcp.com 65001(65001 = UTF-8) - 或直接用 PowerShell,在设置里填
powershell.exe -ExecutionPolicy ByPass -NoExit -Command "chcp 65001" - macOS/Linux:确保终端模拟器(如 iTerm2、GNOME Terminal)已设为 UTF-8,且
locale输出含UTF-8;IDEA Terminal 默认继承系统,一般不用额外配 - 别在 Terminal 里手动敲
chcp 65001试——它只对当前会话有效,重启 Terminal 就失效
最易忽略的点:Git 提交的文件可能自带 BOM 或混合编码,IDEA 不会自动转换。一旦某个 .java 文件开头有 BOM,整个文件读取就会偏移,后续所有中文解析全崩。遇到诡异乱码,先用十六进制编辑器看文件头有没有 EF BB BF。










