You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行mvn clean test时终端特殊字符显示异常求助

Windows下IntelliJ IDEA执行Maven命令时特殊字符显示为问号的解决办法

在Windows系统的IntelliJ IDEA中执行命令 mvn clean test -D"cucumber.filter.tags=@OCR3" 时,终端输出的特殊字符(如ğ、ş、İ等)显示为问号。已在pom.xml中配置UTF-8编码及maven-surefire-plugin相关参数,同时项目encoding.xml也设置为UTF-8编码,但问题仍未解决。

已配置的相关文件

pom.xml 相关配置

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <aspectj.version>1.8.10</aspectj.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

...

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
                <encoding>${project.build.sourceEncoding}</encoding>
                <includes>
                    **/TestRunner*.java
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

Cucumber步骤类示例

@When("test")
public void searchToSplitFind(int index){
  System.out.println("ç,ğ,ş,ö,Ç,Ğ,Ş,İ,Ö");
}

encoding.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding" defaultCharsetForPropertiesFiles="UTF-8">
    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/src/test/java" charset="UTF-8" />
    <file url="file://$PROJECT_DIR$/src/test/java/features/OCR.feature" charset="UTF-8" />
    <file url="PROJECT" charset="UTF-8" />
  </component>
</project>

执行命令后的终端输出

ç,?,?,ö,Ç,?,?,?,Ö

解决办法

1. 调整Windows终端编码

Windows默认终端编码为GBK,会将UTF-8输出解析为乱码。可临时执行以下命令切换编码为UTF-8:

chcp 65001

执行后再运行Maven命令即可正常显示特殊字符。若需永久生效:

  • 打开命令提示符,右键标题栏选择「属性」
  • 切换到「选项」标签,勾选「使用UTF-8编码」(Windows 10 1903及以上版本支持)

2. 显式指定命令行编码参数

在执行Maven命令时直接指定编码参数,避免配置传递问题:

mvn clean test -D"cucumber.filter.tags=@OCR3" -Dfile.encoding=UTF-8

3. 检查IntelliJ IDEA终端配置

确保IDEA内置终端使用UTF-8编码:

  • 打开「File > Settings > Tools > Terminal」
  • 勾选「Override IDE encoding」并选择「UTF-8」
  • 重启IDEA后重新执行命令

4. 升级maven-surefire-plugin版本

旧版本插件可能存在编码处理缺陷,建议升级至3.2.5及以上版本,修改pom.xml配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.2.5</version>
    <configuration>
        <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
        <encoding>${project.build.sourceEncoding}</encoding>
        <includes>
            **/TestRunner*.java
        </includes>
    </configuration>
</plugin>

内容的提问来源于stack exchange,提问作者CvMr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:31:02