IntelliJ IDEA中文乱码需逐层统一UTF-8编码:①全局/项目/properties文件编码设为UTF-8并勾选透明转换;②右下角手动Reload或Convert单个文件编码;③运行配置、Maven、IDEA启动VM参数均添加-Dfile.encoding=UTF-8;④Tomcat日志编码同步改为UTF-8。

在IntelliJ IDEA中打开Java源文件、properties配置文件或运行程序时,中文显示为方块、问号或一堆乱码字符,说明编码链路中至少有一环未对齐UTF-8,必须逐层排查并强制统一。
统一全局与项目编码设置
这是最基础也最关键的一步,覆盖新建文件和默认读取行为。打开菜单栏File → Settings(Windows/Linux)或IntelliJ IDEA → Preferences(macOS)→ 左侧展开Editor → File Encodings。
将Global Encoding、Project Encoding、Default encoding for properties files三处下拉框全部选为UTF-8。
务必勾选Transparent native-to-ascii conversion——否则.properties文件里的中文注释会被自动转成\u4f60\u597d这类Unicode转义,导致运行时读不到原始中文。
点击OK保存,此时新创建的文件将默认以UTF-8保存,但已有文件编码不会自动变更。
修复单个文件的当前编码
右下角状态栏会实时显示当前文件的编码,如显示“GBK”“ISO-8859-1”或“windows-1252”,说明该文件正被错误解码。
方法一:右键点击右下角编码标识 → 选择Reload project encoding,让IDEA按当前项目编码(UTF-8)重新解析内容——仅适用于原内容确实是UTF-8但被误标的情况。
方法二:右键点击右下角编码标识 → 选择Convert encoding to UTF-8,将文件内容从当前编码转换为UTF-8并重写磁盘——【此操作不可逆,务必先备份原文件】。
方法三:若转换后中文仍乱,说明原始文件本身是GBK等编码保存的,需先用记事本或Notepad++以原始编码打开→另存为UTF-8无BOM格式→再拖回IDEA中打开。
强制控制台输出使用UTF-8
即使文件编码正确,控制台仍可能输出乱码,因为JVM启动时未指定file.encoding参数。
第一步:打开Run → Edit Configurations… → 左侧选中你的Application或Tomcat Server配置 → 右侧找到VM options输入框。
第二步:在输入框中追加-Dfile.encoding=UTF-8,注意前面要有空格,不要换行。
第三步:点击Apply → OK,然后重启运行配置——这一步直接作用于当前程序的JVM实例,优先级高于IDEA界面设置。
若使用Maven命令(如clean compile),还需额外进入Settings → Build, Execution, Deployment → Build Tools → Maven → Runner,在VM Options中同样填入-Dfile.encoding=UTF-8。
修改IDEA启动级JVM参数
当上述步骤仍无效,说明IDEA自身启动时JVM已加载了错误的系统编码,必须从源头干预。
关闭IDEA,进入其安装目录下的bin文件夹,找到idea64.exe.vmoptions(Windows/macOS Intel)或idea.vmoptions(macOS Apple Silicon)。
用记事本或VS Code打开该文件,在最后一行插入:-Dfile.encoding=UTF-8。
保存文件,重新启动IDEA——此时整个IDEA进程及其所有子JVM均强制使用UTF-8作为默认编码,覆盖操作系统locale影响。
检查并修正Tomcat日志编码(Web项目专用)
若部署到外置Tomcat且控制台日志仍乱码,问题可能出在Tomcat自身的日志处理器上。
打开Tomcat安装目录下的conf/logging.properties文件,查找这一行:
java.util.logging.ConsoleHandler.encoding = ${java.util.logging.ConsoleHandler.defaultEncoding}
将其改为:java.util.logging.ConsoleHandler.encoding = UTF-8。
同时确认IDEA中Tomcat Server配置的Startup/Connection → VM options也包含-Dfile.encoding=UTF-8,双保险确保日志管道全程UTF-8。



















