创建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>
相关推荐
Muscleheng7 分钟前
Spring Boot 3.x 集成 DeepSeek 实现 Function Calling(工具调用)
人工智能·spring boot·后端·ai·spring ai·deepseek
@航空母舰13 分钟前
SpringBoot通过Map实现天然的策略模式
java·spring boot·后端
Co_Hui40 分钟前
Java 并发编程
java
IT_陈寒1 小时前
JavaScript的this又双叒叕让我怀疑人生了
前端·人工智能·后端
陈随易1 小时前
MCP协议第5次更新,从打电话到微信聊天的巨大变革
前端·后端·程序员
65岁退休Coder1 小时前
LangChain v1.3.4 笔记 - 06 RAG 检索增强生成
后端
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(四十三):前后端数据验证
后端·go·ai编程
long3162 小时前
Java 新手入门与实战开发指南
java·开发语言
YuePeng2 小时前
别再让 AI 直接写 SQL 了:一个注解搞定十亿行数据的语义层
后端·github
半夜里咳嗽的狼2 小时前
Go 1.25 的 WaitGroup.Go 省了两行代码,也补不上这三个并发边界
后端·go