今天在做项目时遇到一个非常头疼的问题——我已经在Java代码中将编码统一为UTF8,但是当我将其打包成Jar文件后,通过Bash和CMD运行时,却出现了中文乱码问题。这让我感到很困惑,因为在IDE中运行时完全没有问题。类似如下图:
起初是觉得Java编译时编码出现了问题,但经过几小时的排查,终于找到中文乱码问题的根源——cmd/bash默认的编码是GBK。为了防止日后再踩坑,本文记录问题的解决方案。
一、设定cmd的编码为utf-8
打开cmd,输入以下命令
chcp 65001
这样既可以更改cmd的编码为UTF-8了。
ps:以下是常用的cmd编码
字符编码 对应字符
GBK(默认) 936
美国英语 437
utf-8 65001
二、规定执行java时的编码方式
在cmd下,常见运行Jar包的命令如下
java -jar myproject.jar
但这样可能会使得java运行时编码不正确导致的报错,这时候我们可以将运行Jar时,指定编码参数
java -Dfile.encoding=utf-8 -jar myproject.jar
三、将以上命令打包成bat
每次启动项目都要进行如上两步的话,其实会非常麻烦,我们可以将以上两部打包成bat批处理文件,具体步骤如下
3.1 在Jar的目录下创建一个txt文件
比如我们这里用记事本新建一个名为runMyProject.txt
3.2 文本内容修改如下
chcp 65001
java -Dfile.encoding=utf-8 -jar myproject.jar
3.3 修改文件后缀为.bat
最后我们将.txt文件后缀修改为.bat文件即可
以后我们只需要双击运行bat文件即可运行我们的java项目,而且还不会出现中文乱码的情况。
喜欢 (0)赏