在 CentOS 里 env(或终端输出)出现乱码,通常不是 env 命令本身的问题,而是字符编码 / 终端环境不一致导致的。下面按常见原因逐一说明,并给出解决办法。
env 输出中中文变量值乱码ls、cat 中文文件名乱码系统或终端使用的编码不是 UTF-8(比如 LANG=C、zh_CN.GBK)
locale
正常应看到类似:
LANG=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
如果看到:
LANG=C
或
zh_CN.GBK
就很可能乱码。
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
locale -a | grep UTF-8
如果没有,安装:
yum install -y glibc-langpack-zh
文件 → 属性 → 终端 → 编码 → UTF-8
Window → Translation → Remote character set → UTF-8
变量是在 GBK 环境下写入的,比如:
export NAME="中文" # 在 GBK 终端写入
重新在 UTF-8 终端设置变量,或避免中文环境变量。
如果你是:
env | grep xxx
cat file
文件乱码,但 env 本身不乱码,那通常是文件编码问题。
查看文件编码:
file file.txt
转换编码:
iconv -f GBK -t UTF-8 file.txt -o new.txt
| 检查项 | 命令 |
|---|---|
| 当前编码 | locale |
| 是否 UTF-8 | echo $LANG |
| SSH 客户端 | 设置为 UTF-8 |
| 文件编码 | file xxx |
CentOS 下
env乱码,90% 是因为终端 / 系统编码不是 UTF-8,或 SSH 客户端编码不一致。
如果你愿意,可以把:
locale
env
的输出贴出来,我可以直接帮你判断是哪一种情况。