CentOS下Java日志出现乱码,通常由字符编码不一致导致,可按以下步骤解决:
检查并设置系统编码
locale,确认LANG和LC_ALL是否为UTF-8。export LANG=en_US.UTF-8、export LC_ALL=en_US.UTF-8。/etc/locale.conf,添加LANG=en_US.UTF-8,执行source /etc/locale.conf或重启生效。配置JVM启动参数
在启动Java程序时添加-Dfile.encoding=UTF-8参数,例如:
java -Dfile.encoding=UTF-8 -jar your_app.jar。
修改日志框架配置
log4j.properties中添加log4j.appender.file.encoding=UTF-8。logback.xml中配置encoder charset="UTF-8"。检查Java代码中的编码
确保文件读写、日志输出等操作显式指定UTF-8编码,例如:
new InputStreamReader(inputStream, StandardCharsets.UTF-8)。
验证终端编码
若通过终端查看日志,确保终端编码为UTF-8,可通过export LANG=en_US.UTF-8临时设置。
检查字体支持(针对中文乱码)
若为中文乱码,安装中文字体(如simsun.ttf),并更新字体缓存:
sudo yum install fonts-chinese
sudo fc-cache -fv
注意:修改后需重启应用或终端使配置生效。若问题仍存在,需检查代码中是否有硬编码的非UTF-8字符集设置。