Windows 10下Spring Boot项目Maven测试因编码问题失败,如何解决?
解决Windows下Maven测试非拉丁字符乱码问题
以下是几个可行的解决措施:
1. 完整配置maven-surefire-plugin插件
你之前仅添加了argLine配置但未明确声明插件,完整配置插件并补充编码相关参数:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <!-- 建议使用最新稳定版 --> <configuration> <argLine>-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8</argLine> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
添加-Dsun.jnu.encoding=UTF-8是因为Windows系统中该参数会影响系统级字符处理,避免文件名或系统相关操作的乱码。
2. 临时或永久修改Windows命令行编码
- 临时生效:打开命令提示符后,先执行
chcp 65001切换到UTF-8编码,再运行mvn test。 - 永久生效:进入Windows设置→时间和语言→语言→管理语言设置→更改系统区域设置,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,重启电脑后所有命令行默认编码变为UTF-8。
3. 确保测试资源文件编码为UTF-8
检查测试用到的资源文件(如.properties、.json、测试用例中的文本文件)是否以UTF-8编码保存。若文件是GBK等其他编码,Maven读取时会出现乱码,可通过记事本打开文件后选择「另存为」,编码选UTF-8覆盖保存。
4. 配置Maven全局编码
修改Maven安装目录下的conf/settings.xml(或用户目录.m2/settings.xml),添加全局编码配置,确保所有项目默认使用UTF-8:
<profiles> <profile> <id>utf-8</id> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties> </profile> </profiles> <activeProfiles> <activeProfile>utf-8</activeProfile> </activeProfiles>
5. 配置maven-compiler-plugin确保编译编码一致
编译阶段的编码不一致也可能导致测试时乱码,添加编译插件的编码配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <!-- 匹配你的Java版本 --> <configuration> <source>17</source> <!-- 替换为你的项目Java版本 --> <target>17</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
内容的提问来源于stack exchange,提问作者programmer
相关产品推荐
相关产品推荐

