在 Debian 环境中出现“乱码”,通常不是系统坏了,而是字符编码 / 区域(locale)设置不一致导致的。下面按常见原因和解决办法说明。
Debian 默认可能使用:
POSIX
C
而不是 UTF-8,这会导致中文显示为乱码。
locale
如果看到:
LANG=
LC_ALL=
或
LANG=C
就很可能乱码。
sudo dpkg-reconfigure locales
en_US.UTF-8zh_CN.UTF-8zh_CN.UTF-8或手动:
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
exit
再登录。
即使服务器是对的,客户端编码不对也会乱码。
UTF-8UTF-8有时文件是 GBK 编码:
file 文件名
如果是 GBK:
iconv -f GBK -t UTF-8 文件 > 新文件
容器常缺少 locale:
ENV LANG=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8
RUN apt-get update && apt-get install -y locales \
&& locale-gen zh_CN.UTF-8
locale 显示 UTF-8如果你愿意,可以把下面信息发我,我能精准定位:
locale
echo $LANG
file 乱码文件
以及你用的是 SSH / 桌面 / Docker / WSL 哪种环境。