最直接有效的方式是在pom.xml的<properties>中声明<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>和<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>,并显式配置maven-compiler-plugin的<encoding>UTF-8</encoding>,确保源码读取、编译及报告生成全程使用UTF-8,同时需同步设置IDE、终端及JVM编码以避免乱码。

最直接有效的方式是在 pom.xml 中通过 <properties> 声明全局编码,并配合编译插件显式指定,确保 Maven 从读源码到生成字节码全程使用 UTF-8。
统一声明项目级编码属性
这是基础且推荐的配置方式,影响编译、资源处理、报告生成等多个环节:
-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>:控制源码(.java)读取和编译时的字符编码 -
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>:保障 Javadoc、Site 报告等输出内容不乱码
写在 <properties> 标签下即可,无需额外插件:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
显式配置 maven-compiler-plugin 编码
即使已设全局属性,部分旧版 Maven 或插件仍可能忽略,建议再在编译插件中双重确认:
立即学习“Java免费学习笔记(深入)”;
- 添加
<encoding>UTF-8</encoding>到maven-compiler-plugin的<configuration> - 确保 JDK 版本兼容(如
<source>/<target>设为 8 或更高)
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
补充:资源文件与测试环节也需对齐
中文常出现在 resources 和单元测试中,这些环节若未设编码,仍会出问题:
-
资源过滤:在
<build><resources>下为每个<resource>加<encoding>UTF-8</encoding> -
测试运行:用
maven-surefire-plugin时,在<argLine>中加入-Dfile.encoding=UTF-8 -
Properties 文件:若含中文键值(如
messages_zh_CN.properties),还需加<propertiesEncoding>UTF-8</propertiesEncoding>到maven-resources-plugin
配套环境别遗漏
Maven 配置只是链路一环,还需同步检查:
- IDE 设置:IntelliJ IDEA 中 File → Settings → Editor → File Encodings 全部设为 UTF-8,包括 Global/Project/Properties 三项
-
终端编码:Windows 用户执行
chcp 65001切换控制台为 UTF-8;Linux/macOS 通常默认 OK,但 CI 环境(如 GitHub Actions)需显式设置LANG=en_US.UTF-8 -
JVM 启动参数:若运行阶段仍有乱码(如日志、控制台输出),在 IDE 运行配置或
mvn spring-boot:run中补上-Dfile.encoding=UTF-8


















