背景
Windows
SpringBoot项目发布jar文件,创建run.bat脚本运行jar做后台服务。
![](https://img.haomeiwen.com/i23281417/a0649bd43341dc10.png)
SpringBoot中的logback.xml日志配置文件中没有声明<charset>UTF-8</charset>属性时运行程序,在控制台中输出的日志内容(绿色箭头)和banner内容(红色箭头)中文都没有乱码,并且在日志文件中也没有乱码。
![](https://img.haomeiwen.com/i23281417/ddefe79d9f800ebe.png)
![](https://img.haomeiwen.com/i23281417/a86d98b37985f529.png)
我们应该本来就是需要这个样子吧!!但是笔者想到后面跨平台使用时程序运行在其他系统主机上怕是默认编码跟咱这个主机不一样出现乱码。所以在logback.xml文件中对输出指定了编码<charset>UTF-8</charset>。但是在运行窗口中看到程序输出的内容乱码,banner的内容没有乱码,并且日志文件也出现乱码。
![](https://img.haomeiwen.com/i23281417/468f8fa1da1420af.png)
![](https://img.haomeiwen.com/i23281417/4da744d9456e62c2.png)
猜测是运行环境也就是Windows运行窗口默认的编码是GBK,所以在运行之前先将环境中的编码改成uft-8,在执行脚本运行jar文件之前先执行chcp 65001。
![](https://img.haomeiwen.com/i23281417/95da76d63cf673d9.png)
再次运行程序,看到程序输出的日志没有乱码,但是banner的内容乱码了,这时的日志文件也是乱码 的,因此这样是不够的。
![](https://img.haomeiwen.com/i23281417/95d1fd6ac99c5f99.png)
在执行脚本中加上-Dfile.encoding=UTF-8参数
![](https://img.haomeiwen.com/i23281417/0e28f069e4067218.png)
![](https://img.haomeiwen.com/i23281417/c6c9d8bbb8a52a05.png)
再次运行程序,看到程序输出的内容和banner中的内容都没有乱码,但是日志文件里面的内容还是乱码的。。。。
网友评论