最近项目中遇到一个很奇怪的问题,就是后端发布报警信息给EMQ(mqtt),前端去取这些报警信息,由于前后端是分离的,在测试的时候再各自的开发工具中使用没有什么问题,报警弹框也没有乱码,但是当项目打包成一个jar包发布的时候就会出现报警信息中文的乱码。
找了好久原因,一位是前端的原因,是后端的原因,或是中间EMQ的原因,但是都没有解决任何问题。搁置了很久最后终于找到解决的原因了。就是在启动的jar的时候给Java虚拟机设置编码方式。注意你的服务器编码方式,linux系统的服务器编码默认是utf-8,对于是windows的服务器默认不是utf-8。所以在启动的时候需要设置编码方式。
如下所示:java -Dfile.encoding=utf=8