今天做项目的时候遇到一个很头疼的问题——无论在Java代码中如何统一编码为UTF8,在IDE中运行是完全没问题的,但打包成Jar通过Bash和CMD运行,都会出现中文乱码问题。起初是觉得Java编译时编码出现了问题,但经过几小时的排查,终于找到中文乱码问题的根源——cmd/bash默认的编码是GBK。为了防止日后再踩坑,本文记录问题的解决方案。
一、设定cmd的编码为utf-8
打开cmd,输入以下命令
chcp 65001
这样既可以更改cmd的编码为UTF-8了。
二、规定执行java时的编码方式
在cmd下,常见运行Jar包的命令如下
java -jar project.jar
但这样可能会使得java运行时编码不正确导致的报错,这时候我们可以将运行Jar时,指定编码参数
java -Dfile.encoding=utf-8 -jar project.jar
可以看到,项目正常启动,并且不会出现乱码问题;
通过以上步骤,基本上可以将中文乱码问题解决。
------------------------------------------------------------------------------------
二、windows 下java-jar启动的jar包怎么停
1 用管理员打开cmd命令窗口
2 输入:netstat -ano | findstr 端口号9233
3 根pid删除命令
taskkill /t /f /pid 2136