IDEA-控制台乱码

前言

这个是一个反向的方案,当你尝试过市面上所有的方案后,MAVEN 打包输出还是乱码,注意:这里是Maven 打包的时候乱码,那么建议你反向操作

你可以先看下这个页面的解决方案

问题现象

在 IntelliJ IDEA 中执行 Maven 编译时,控制台输出出现乱码,显示为 ���... 等不可读字符。

复制代码
[INFO] Compiling 2724 source files to /path/to/target/classes
[INFO] /path/to/SomeService.java: ���������������

问题原因

根本原因

IntelliJ IDEA 2025.2 版本开始,Maven 的执行方式发生了重大变化:

  1. 旧版本(2025.1 及之前)
    • 直接调用 java.exe 执行 Maven
  2. 新版本(2025.2 及之后)
    • 通过 cmd.exe /c(Windows)或 shell(macOS/Linux)来启动 Maven
    • 可以从控制台输出结果看到这个变化

编码冲突

  • Windows 系统cmd.exe 默认使用 GBK 编码
  • 项目源码:通常使用 UTF-8 编码
  • 结果:编码不一致导致中文和特殊字符显示为乱码

为什么传统方法无效

即使你已经设置了以下配置,问题仍可能存在:

  1. IDEA 的 File Encoding 设置为 UTF-8

  2. Maven 配置中指定 -Dfile.encoding=UTF-8

  3. pom.xml 中配置了编码属性:

    xml 复制代码
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

原因:Maven 通过 cmd/shell 启动后,JVM 可能仍未正确继承或使用 UTF-8 编码。

解决方案

方法:设置 JAVA_TOOL_OPTIONS 环境变量

通过在 IDEA 中为 Maven 设置 JAVA_TOOL_OPTIONS 环境变量,强制 JVM 使用 UTF-8 编码。

详细步骤

1. 打开 IDEA 设置

Windows/Linux:

  • 快捷键:Ctrl + Alt + S
  • 或菜单:FileSettings

macOS:

  • 快捷键:Cmd + ,
  • 或菜单:IntelliJ IDEAPreferences
2. 导航到 Maven Runner 配置

按照以下路径进入:

复制代码
Build, Execution, Deployment
  └─ Build Tools
      └─ Maven
          └─ Runner
3. 添加环境变量

找到 Environment variables 字段:

  1. 点击右侧的文件夹图标或输入框
  2. 添加新的环境变量:
    • Name : JAVA_TOOL_OPTIONS
    • Value : -Dfile.encoding=UTF-8

完整格式:

复制代码
JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
4. 应用设置
  1. 点击 Apply 按钮
  2. 点击 OK 关闭设置窗口
5. (可选)清除缓存并重启

如果问题仍存在,可以清除缓存:

  1. 菜单:FileInvalidate Caches...
  2. 勾选相关选项
  3. 点击 Invalidate and Restart

注意:大多数情况下无需重启,设置会立即生效。

验证方法

重新执行 Maven 编译命令(如 mvn compilemvn clean install),检查控制台输出是否正常显示中文。

适用范围

受影响的版本

  • IntelliJ IDEA 2025.2 及更高版本

受影响的系统

  • Windows:最常见(cmd.exe 默认 GBK)
  • macOS:可能受影响
  • Linux:可能受影响(取决于系统 locale 设置)

技术原理

JAVA_TOOL_OPTIONS 环境变量

JAVA_TOOL_OPTIONS 是一个特殊的 JVM 环境变量:

  • 作用:在 JVM 启动时自动应用指定的选项
  • 优先级:高于其他配置方式
  • 生效范围:对所有通过该环境变量启动的 Java 进程有效

为什么这个方法有效

  1. IDEA 通过 shell/cmd 启动 Maven
  2. Maven 进程继承 JAVA_TOOL_OPTIONS 环境变量
  3. JVM 在启动时自动应用 -Dfile.encoding=UTF-8
  4. 所有输出使用统一的 UTF-8 编码

其他注意事项

pom.xml 中的编码配置

虽然这不是解决乱码的主要方法,但仍建议在 pom.xml 中明确指定编码:

xml 复制代码
<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>

这可以确保:

  • 源代码编译使用正确编码
  • 资源文件处理使用正确编码
  • 报告生成使用正确编码

全局 Maven 配置

如果需要在命令行中也使用 UTF-8,可以在 ~/.mavenrc(macOS/Linux)或环境变量中设置:

macOS/Linux:

bash 复制代码
# ~/.mavenrc
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"

Windows:

在系统环境变量中添加:

复制代码
变量名: JAVA_TOOL_OPTIONS
变量值: -Dfile.encoding=UTF-8

相关资源

总结

IntelliJ IDEA 2025.2 版本改变了 Maven 执行方式,导致编码传递出现问题。通过在 IDEA 的 Maven Runner 配置中设置 JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 环境变量,可以强制 JVM 使用 UTF-8 编码,从而彻底解决乱码问题。

此方法简单有效,无需修改系统配置或项目代码,设置后立即生效。

以上内容都是转载

https://vacuity.me/intellij-idea-maven-bian-yi-shu-chu-luan-ma-wen-ti-jie-jue-fang-an/

我的调整

调整1

添加一行 -Dfile.encoding=UTF-8

调整2

调整3

最后

当你上面这些东西都没办法解决的时候,你可以尝试将 编码设置 成 GBK ,因为我尝试过搜索过各种方式,最后反向操作好了...

shell 复制代码
JAVA_TOOL_OPTIONS=-Dfile.encoding=GBK
相关推荐
策案案案2 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
辰烨chenye4 小时前
LeetCode Hot 100 题解 · 堆篇
java·算法·leetcode
shehuiyuelaiyuehao4 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
小刘在重生~5 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
随遇而安zx5 小时前
【多线程】---JMM 与 volatile 深度解析
java·多线程
邪修king5 小时前
Re:Linux系统篇(十九):进程篇(八): 进程等待详解:wait/waitpid,僵尸进程到底该如何回收
java·开发语言
啵啵啵鱼5 小时前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
TinyMemory6 小时前
Java 面向对象核心入门(七):方法重载 Overload,同一个方法名能干不一样的活
java·面向对象·overload·方法重载
吴声子夜歌6 小时前
Java扩展——OkHttp
java·开发语言·okhttp