一、问题描述
spring boot项目,在IDEA中启动好好的,打成jar包,通过命令启动,日志乱码
二、解决方法
命令启动时添加参数-Dfile.encoding=utf-8即可
java -jar -Dfile.encoding=utf-8 xxxx.jar
注意,我这里用的是logback,在配置文件里,输出都指定了编码:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <pattern>${CONSOLE_LOG_PATTERN}</pattern> -->
<pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
</appender>
如果上面的方式还是不行,输出的中文还是乱码,可以在控制台下,输入chcp命令查看当前编码:
数字对应编码如下:
65001 UTF-8
936 GBK
437 美国英语
可以在输入启动命令前,输入以下命令,进行切换:
chcp 65001 UTF-8
chcp 936 GBK
chcp 437 美国英语
像上面那,在windows下控制台的默认编码是GBK,而所有的日志输出都是UTF-8,所以,如果按上面那些步骤操作之后,还不行,可以在启动之前,将编码设置为日志文件里相对应的即可。
chcp 65001
java -Dfile.encoding=utf-8 -jar xxxx &