
解决方法
由于 IDE(如 IntelliJ IDEA)默认可能使用系统的 GBK 编码,而 Spring Boot 的配置文件通常要求使用 UTF-8 编码,当以错误编码读取或保存包含中文的文件时,就会显示为乱码
修改 IDEA 全局与项目编码(核心步骤)
这是解决乱码问题最关键的一步,需要确保整个开发环境的编码统一为 UTF-8。
-
打开设置:
File->Settings(macOS 为IntelliJ IDEA->Preferences)。 -
导航至:
Editor->File Encodings。 -
将以下三项全部设置为 UTF-8:
-
Global Encoding(全局编码) -
Project Encoding(项目编码) -
Default encoding for properties files(属性文件默认编码)
-
-
重要提示 :务必勾选
Transparent native-to-ascii conversion(透明 native-to-ascii 转换)下方的Override encoding from IDE settings for properties files 选项(该选项实际作用于所有类似 Properties 的键值型文本,包括.yml)。 -
点击
Apply和OK保存。
2. 转换现有乱码文件
修改全局设置后,已经乱码的文件不会自动恢复,需要手动重新编码:
-
在 IDEA 中打开乱码的
application.yml文件。 -
在文件右上角或右下角状态栏查看当前文件的编码(可能显示为 GBK 或其他)。
-
点击编码下拉框,选择
UTF-8。 -
此时 IDEA 会提示是否转换(Convert)或重载(Reload),请选择
Convert(转换),将文件从旧编码转换为 UTF-8。 -
转换后,原本的
????应该会恢复成正常的中文注释。如果恢复后显示正常,请立即保存文件(Ctrl+S)。
3. 清理缓存并重启(若上述步骤无效)
如果修改设置并转换后依然显示乱码,可能是 IDEA 的旧缓存导致:
-
关闭当前项目。
-
进入项目根目录,找到并删除
.idea文件夹下的encodings.xml文件(或者直接删除整个.idea文件夹,但这会重置项目的所有 IDE 个性化设置)。 -
重新打开 IDEA 并导入项目。
-
再次检查编码设置,通常此时乱码问题会彻底解决。
4. 处理 BOM 头问题(进阶排查)
如果在 Windows 环境下使用过记事本等编辑器保存过该文件,可能会带有不可见的 BOM 头,导致 IDEA 解析异常:
-
可以使用 Notepad++ 等文本编辑器打开该
yml文件。 -
在菜单栏选择
编码->转为 UTF-8 无 BOM 编码。 -
保存后重新在 IDEA 中打开即可。
5. 补充:Maven/Gradle 构建配置(预防运行时乱码)
虽然上述步骤主要解决的是编辑时的显示乱码 ,但为了预防项目在打包或运行时读取配置文件出现乱码(如启动报错 MalformedInputException),建议在构建配置中显式声明编码:
在 pom.xml的 <properties>标签中添加:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
并在 maven-surefire-plugin或 spring-boot-maven-plugin中配置 JVM 参数:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration>
</plugin>