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
相关推荐
A-Jie-Y2 小时前
JAVA设计模式-工厂方法模式
java·设计模式
千云2 小时前
问题排查报告:一次因元空间溢出导致的CPU飙升与接口超时
java·后端
Full Stack Developme2 小时前
MyBatis-Plus 注解教程
java·spring·mybatis
程序员三明治2 小时前
【AI】Java 调用大模型 API 实战:从 OpenAI 协议到 SiliconFlow 流式响应解析
java·开发语言·人工智能
2501_913061342 小时前
JVM虚拟机——面试中的八股文
java·jvm·面试
A-Jie-Y2 小时前
JAVA设计模式-单例模式
java·设计模式
编程之升级打怪2 小时前
设计模板引擎类的主要接口
java
ffqws_2 小时前
Spring Boot 整合 PageHelper 实现分页查询
java·spring boot·mybatis
大龄码农-涵哥2 小时前
Java调用AI大模型API入门:从零开始接入ChatGPT/通义千问
java·人工智能·chatgpt