由 Arthas 中文乱码引发的 Java 默认编码思考

Posted by agentd on 03-16,2020

使用 Arthas 在 Centos 输出的中文字符是乱码,但是在 Mac 下是正常的。
查看 Java 获取到的 defaultCharset,Centos 下是 US-ASCII,即使指定了 LANG=zh_CN.UTF-8 仍然没有改变默认编码。

Centos 下默认编码

jshell> java.nio.charset.Charset.defaultCharset()
$1 ==> US-ASCII

Mac 下默认编码

jshell> java.nio.charset.Charset.defaultCharset()
$1 ==> UTF-8

Arthas 向控制台输出内容使用的默认编码,可以通过指定 file.encoding 设置默认编码。

java -Dfile.encoding=UTF-8 -jar arthas-boot.jar