java打成jar包,在windows上运行出现乱码
今天做项目的时候遇到一个很头疼的问题——无论在Java代码中如何统一编码为UTF8,在IDE中运行是完全没问题的,但打包成Jar通过Bash和CMD运行,都会出现中文乱码问题。起初是觉得Java编译时编码出现了问题,但经过几小时的排查,终于找到中文乱码问题的根源——cmd/bash默认的编码是GBK。
乱码共有两处:一处是控制台打印日志乱码,另一处是返回数据到前台,乱码。
解决:
控制台日志乱码:
打开cmd,输入以下命令
chcp 65001
这样就可以更改cmd的编码为UTF-8了。
数据结果乱码:
运行时,指定编码,启动命令改为:
java -Dfile.encoding=utf-8 -jar cpw-0.0.1-SNAPSHOT.jar