JAVA日志中文乱码问题

tool   linux   java  
发布于 Jun 20, 2019

经常遇到JAVA程序在linux机器上运行日志输出中文乱码的情况,对解决方案进行汇总,如下措施不一定全部需要,能正常显示中文为止。

logback编码设定

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

linux安装语言包

这个出问题的可能性比较大,有些机器默认未安装中文语言包,以ubuntu为例:

apt-get -y install language-pack-zh-hans
locale-gen

linux配置环境变量

机器的语言配置通过几个环境变量来控制的,给/etc/profile设置几个环境变量:

# vim /etc/profile

export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN:zh:en_US:en"

# source /etc/profile

本次的分享到此结束,希望对你有所帮助。

如果你对我分享的内容感兴趣,欢迎扫码关注公众号:新质程序猿,并设置星标,推送更实时哟!

本文由 黄彦祥 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。
可自由转载、引用,但需署名作者且注明文章出处。