在 CentOS 中出现 env(或终端、日志、命令输出)乱码,通常不是 env 命令本身的问题,而是字符编码 / 语言环境不一致导致的。下面按常见原因逐一说明:
查看当前环境:
locale
env | grep LC
env | grep LANG
如果看到:
LANG=
LC_ALL=
或者
LANG=POSIX
就容易出现中文乱码。
设置 UTF-8 环境(推荐):
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
永久生效:
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
source ~/.bashrc
即使设置了 LANG=zh_CN.UTF-8,如果系统没装,也会乱码。
检查:
locale -a | grep zh_CN
若无输出,安装:
yum install -y kde-l10n-Chinese
yum reinstall -y glibc-common
然后:
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
即使服务器是对的,客户端不对也会乱码
UTF-8例如:
检查:
env | cat -v
如果看到 M- 开头字符,说明是编码不一致。
容器内常默认:
LANG=C
解决:
docker run -e LANG=zh_CN.UTF-8 -e LC_ALL=zh_CN.UTF-8 ...
或在 Dockerfile:
ENV LANG=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8
locale 是否 UTF-8zh_CN.UTF-8如果你愿意,可以贴一下:
locale 输出我可以直接帮你定位是哪一层出的问题。