在 CentOS 上 Apache 日志出现乱码,通常不是 Apache 本身“坏了”,而是字符编码不一致导致的。下面按常见原因和解决办法给你梳理一下。
locale
常见问题输出:
LANG=C
LC_ALL=
或
LANG=zh_CN.GBK
✅ 正常应该是:
LANG=zh_CN.UTF-8
localectl set-locale LANG=zh_CN.UTF-8
或编辑:
vi /etc/locale.conf
内容:
LANG=zh_CN.UTF-8
然后重新登录终端。
例如:
cat / less 在 GBK 终端看 UTF-8 日志 → 乱码✅ 验证方式:
file access_log
输出类似:
access_log: UTF-8 Unicode text
✅ 解决:
iconv 转换:iconv -f utf-8 -t gbk access_log > access_gbk.log
比如:
Apache 原样记录,日志就乱。
✅ 解决:
httpd -V | grep UTF
SetEnv LANG zh_CN.UTF-8
logrotate 本身不会改编码,但如果:
sed/awk 处理也可能“看起来”乱。
locale 是否 UTF-8如果你愿意,可以把:
locale 输出发出来,我可以直接帮你定位是哪一层出的问题。