创建springboot项目时会出现注释乱码情况

解决方法

由于 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)。

  • 点击 ApplyOK保存。

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-pluginspring-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>
相关推荐
IT_陈寒1 小时前
Vite冷启动快?我遇到了个奇怪的依赖问题
前端·人工智能·后端
geovindu1 小时前
java: Builder Pattern
java·开发语言·后端·设计模式·建造者模式·生成器模式
郝学胜_神的一滴1 小时前
系统设计 019:分片拆分与副本容灾深度解析
后端·架构
程序员cxuan1 小时前
Cursor 掀桌子了,Grok 4.5 这次要上天了?
人工智能·后端·程序员
卓怡学长1 小时前
w268基于springboot + vue 物流系统
java·数据库·vue.js·spring boot·spring·intellij-idea
.Cnn2 小时前
Redis基础day02
java·数据库·redis
能有时光2 小时前
[MAF的Agent管道详解-07]利用AIAgent中间件构建Agent管道
java·数据库
什巳2 小时前
JAVA练习277- 找到字符串中所有字母异位
java·开发语言·算法·leetcode
程序员爱钓鱼2 小时前
Rust 项目目录结构详解:从 Hello World 到企业级项目
后端·rust