项目在IDEA运行的好好的,打成jar包之后通过cmd运行,给我报了一个数组越界的异常。当时想到的是是不是配置文件有问题。打开jar查看配置文件之后发现没有问题,定位异常的那行还是发现没有问题,于是打了输出日志。终于发现了问题,原来是中文乱码的问题。bash/cmd默认编码是gbk,我的java项目的统一编码是UTF-8,所以出现乱码很正常。
1. 设定cmd的编码是UTF-8
win+r>>cmd,输入以下命令:
chcp 65001
出现如下的显示表示修改编码成功
以下是常用的cmd编码
字符编码 | 对应字符 |
---|---|
GBK(默认) | 936 |
美国英语 | 437 |
-utf-8- | -65001- |
2. 执行java命令时的编码格式
在cmd中输入java命令运行jar包
java -jar ***.jar
这样会使得java程序运行时出现因为编码不正确导致的错误,这时候使用以下命令设置jar运行时的编码格式
java -Dfile.encoding=utf-8 -jar ***.jar
3. 建立一个省时省力的批处理文件
如果每次运行jar包的话都需要进行上面两步会比较麻烦,可以将以上两条命令打包成bat批处理文件。
- 在jar包的同级目录下建立一个txt文件,使用记事本打开。
- 将上面执行的两条命令加入到该文件中。
- 修改文件的后缀名将msgcode.txt文件名改为msgcode.bat
- 点击msgcode.bat文件直接运行即可,可以发现已经不出现乱码了。