Maven Tips
解决mvn编译输出乱码的问题
乱码及分析
最近的某个项目从jdk17升级到jdk21,mvn clean install
的时候,某些输出为中文的地方变成了乱码。搜索出的资料大多数都是IDEA相关,解决办法要么是设置IDEA的File encoding
,要么是在pom.xml
里设置编码,都与我的这个问题不符。
从现象来看应该是jdk版本导致的,因为我运行mvn
命令是在PowerShell下,不是IDEA。最先怀疑是不是jdk厂商的问题,不同厂商的实现有差异。后来都用Oracle提供的JDK进行测试,还是问题依旧,17中文不乱码,切换到21就乱码了。所以推测是JDK 21检测系统的local编码跟17不一样,尝试找了一下有没有设置JDK日志输出编码的参数,未果。
后来在这篇博文里找到了解决方案:关于使用gradle编译java导致中文乱码的分析以及解决(完美且分析了所有情况)
虽然该文是讲Gradle,但是这个问题的根本原因是在JDK上,仍然适合解决我遇到的问题。
解决方法
设置“使用Unicode UTF-8 提供全球语言支持”,操作路径为:控制面板
-时钟和区域
-区域(更改日期、时间或数字格式)
-管理(更改系统区域设置)
-勾选“Beta版:使用Unicode UTF-8 提供全球语言支持”
,设置之后重启生效。