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)原创文章,转载时请注明出处!
发表评论