JAVA在windows环境运行乱码

文章内索引
[显示]

JAR包在CMD命令中运行出现乱码

通过maven打包生成一个jar后,运行在linux与macOS都没有问题,只有在windows环境中出现问题,而且通过IDE运行也没有问题,逐级排查原因。

定位代码

由于项目中有一处代码为new String(bytes),此处并未指定字符集,通过追踪源码发现,未指定字符集时会通过Charset.defaultCharset().name();方法获取系统默认字符集。

Charset.defaultCharset()由什么决定的呢

1、如果使用了eclipse,由java文件的编码决定。

2、如果没有使用eclipse,则有本地电脑语言环境决定,中国的都是默认GBK编码。

指定JVM字符集

可以通过 java –Dfile.encoding=UTF-8 指定或者在环境变量中配置JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8指定。但是指定字符集后命令行中依然显示乱码,所以想到应该是命令行字符集问题。

WIN10修改cmd字符集

windows中cmd的默认字符集是GBK(936),可以通过命令 CHCP 65001(UTF-8) 设置为UTF-8.

也可以通过修改注册表的方法添加HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\,右键新建一个字符串值(S), 取名叫Autorun,值设为@chcp 65001,永久修改CMD字符集

此时再启动jar包时,乱码问题已经解决,Charset.defaultCharset().name();读取的也是CMD中指定的字符集



©版权声明:本文为【翰林小院】(huhanlin.com)原创文章,转载时请注明出处!

发表评论

电子邮件地址不会被公开。