Maven编译时出现中文乱码的完整解决教程

 更新时间:2025年10月14日 09:54:24   作者:一勺菠萝丶  
这篇文章主要为大家详细介绍了Maven编译时出现中文乱码的完整解决教程,适合Windows 用户,Maven 编译项目时终端或 IDEA 出现中文乱码的人群,快跟随小编一起了解下吧

适合:Windows 用户、Maven 编译项目时终端或 IDEA 出现中文乱码的人群

错误示例:

[WARNING] δ�� -source 8 һ������������·��

或者中文输出成一堆“乱码方块”。

一、为什么会出现乱码

这是因为:

  • Windows 控制台默认编码是 GBK
  • Maven(和 Java)输出使用 UTF-8 编码

两者不一致,中文显示就变成了乱码。

简单说:

Maven 说中文 → Windows 听不懂。

 二、快速解决方法

方法 1:临时解决(命令行直接改编码)

每次运行 Maven 前执行这条命令:

chcp 65001

然后再执行:

mvn clean package

作用:把当前 CMD 窗口改成 UTF-8 编码。

优点:立刻生效,不改配置。

缺点:每次都要手动执行。

方法 2:永久解决(配置 Maven 启动参数)

让 Maven 永远以 UTF-8 运行。

① 打开 Maven 安装目录

路径一般是:

D:\apache-maven-3.6.3\bin\mvn.cmd

② 在文件顶部加一行:

set MAVEN_OPTS=-Dfile.encoding=UTF-8

保存后关闭。

③ 验证是否生效:

mvn -v

如果没有乱码,说明成功。

方法 3:IDEA 用户设置(推荐)

如果你是在 IntelliJ IDEA 中运行 Maven 构建:

打开:File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner

VM Options 输入框中添加:

-Dfile.encoding=UTF-8

再打开:File → Settings → Editor → File Encodings

全部设置为 UTF-8

取消 “Transparent native-to-ascii conversion”

方法 4:全局永久生效(推荐高级玩家)

如果你希望任何时候打开命令行 Maven 都是 UTF-8:

在用户目录(C:\Users\<你的用户名>\)下创建一个文件:

mavenrc_pre.bat

写入内容:

chcp 65001 >nul
set MAVEN_OPTS=-Dfile.encoding=UTF-8

保存后重启命令行即可。

三、可选进阶:防止 XML 文件乱码

有时候 Maven 的中文乱码是因为配置文件(如 settings.xmlpom.xml)编码不正确。

确保它们都是 UTF-8 无 BOM 格式保存:

VS Code:

右下角点击编码 → “另存为编码” → 选择 UTF-8

Notepad++:

菜单栏「编码」→「转换为 UTF-8(无 BOM)」→ 保存

四、总结表格

场景原因解决方案
命令行乱码控制台是 GBKchcp 65001
Maven 报乱码输出编码非 UTF-8set MAVEN_OPTS=-Dfile.encoding=UTF-8
IDEA 编译乱码IDEA 未设 UTF-8IDEA → Settings → File Encoding → UTF-8
settings.xml 报错文件含 BOM 或全角空格改为 UTF-8(无 BOM)保存

结语

中文乱码看起来吓人,其实都是 编码不匹配 导致的。

一句话记住:

让系统、Maven、IDEA 一起说 UTF-8,世界就清净了。

到此这篇关于Maven编译时出现中文乱码的完整解决教程的文章就介绍到这了,更多相关Maven编译出现中文乱码解决方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java宽化基本类型转换与精度丢失详解(为什么long可以自动转float)

    Java宽化基本类型转换与精度丢失详解(为什么long可以自动转float)

    java中long到float的转换属于自动类型转换,因为float的范围比long更大,这篇文章主要介绍了Java宽化基本类型转换与精度丢失的相关资料,详细介绍了为什么long可以自动转float,需要的朋友可以参考下
    2026-05-05
  • 一文详解Maven中依赖冲突的正确处理方法

    一文详解Maven中依赖冲突的正确处理方法

    Maven依赖冲突是 Java 开发中的常见问题,很多人遇到后习惯到处写 exclusion,本文将从 JSqlParser 版本冲突的真实案例出发,讲清楚 Maven 的依赖仲裁机制,感兴趣的小伙伴可以了解下
    2025-12-12
  • 解决feign接口返回泛型设置属性为null的问题

    解决feign接口返回泛型设置属性为null的问题

    这篇文章主要介绍了解决feign接口返回泛型设置属性为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot启动后的初始化数据加载原理解析与实战

    SpringBoot启动后的初始化数据加载原理解析与实战

    本文主要围绕 Spring Boot 启动后的初始化数据加载展开,介绍了初始化任务的基本需求,包括全局配置加载、数据库表初始化等,阐述了多种初始化加载方式,分析了它们的优缺点,需要的朋友可以参考下
    2024-11-11
  • springboot多环境(dev、test、prod)配置详解

    springboot多环境(dev、test、prod)配置详解

    这篇文章主要介绍了springboot多环境(dev、test、prod)配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • java实现模拟RPG格斗

    java实现模拟RPG格斗

    这篇文章主要介绍了java实现模拟RPG格斗,每个英雄具有以下几个属性:生命值(为0时英雄倒下)、攻击力(每次攻击时扣除对方的生命值点数)、攻击间隔(每次攻击过后都要等待间隔时间才能进行下次攻击首次攻击之前也要先等待间隔时间)简单设置了下吧,小伙伴可以参考下
    2015-03-03
  • Java中两个字符串进行大小比较的方法

    Java中两个字符串进行大小比较的方法

    这篇文章主要介绍了Java中两个字符串进行大小比较,符串是否相等比较,只能使用equals()方法,不能使用“==”,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Java中String类startsWith方法详解

    Java中String类startsWith方法详解

    这篇文章主要给大家介绍了关于Java中String类startsWith方法的相关资料,startsWith() 方法用于检测字符串是否以指定的前缀开始,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • 微信支付java版本之获取Access_token

    微信支付java版本之获取Access_token

    这篇文章主要介绍了微信支付java版本之获取Access_token,java如何获取Access_token,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 用Java打造简易计算器的实现步骤

    用Java打造简易计算器的实现步骤

    这篇文章主要介绍了如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01

最新评论