经常遇到JAVA程序在linux机器上运行日志输出中文乱码的情况,对解决方案进行汇总,如下措施不一定全部需要,能正常显示中文为止。
log4j同理。这个一般默认就是UTF-8, 但为了保险也可以设一下。
只需关注其中的<charset>UTF-8</charset>
即可。
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE:-100MB}</maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY:-20}</maxHistory>
</rollingPolicy>
</appender>
JAVA启动项加-Dfile.encoding=UTF-8
java -jar xx.jar -Dfile.encoding=UTF-8
这个出问题的可能性比较大,有些机器默认未安装中文语言包,以ubuntu为例:
apt-get -y install language-pack-zh-hans
locale-gen
机器的语言配置通过几个环境变量来控制的,给/etc/profile
设置几个环境变量:
# vim /etc/profile
export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN:zh:en_US:en"
# source /etc/profile
本次的分享到此结束,希望对你有所帮助。
如果你对我分享的内容感兴趣,欢迎扫码关注公众号:新质程序猿,并设置星标,推送更实时哟!