前言:
- 同事给了一个服务,在Windows环境下怎么跑都正常,但一到Linux虚拟机里就中文乱码
- 起初就想到了可能是字符集的问题,但调整了半天也没见效果,最后隔了几天突然想到,我是构建Docker跑的,而且基础镜像就是centos,封闭的环境下修改外部虚拟机的字符集肯定没作用啊,笨比
- 然后就想到了进入容器内部,修改容器内部的字符集,果然就好了
- 若要修改成其他字符集,同理可得(有没有感觉这句话莫名熟悉)
修改正在运行的Docker容器内的字符集
- 先进入Docker容器:
docker exec -it 容器ID /bin/bash
- 查看是否支持中文字符集:
locale -a | grep zh
(PS:这一步如果之前没有特意下过,那么大概率就是没有,所以不用担心,继续老老实实下一步) - 下载中文字符集:
yum install kde-l10n-Chinese -y
- 设置名称:
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
- 看看现在有没有:
locale -a
或locale -a | grep zh
- 把设置写到配置文件里:
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
- 设置中文字符集:设置俩,第二步可能会报错,但我也不知道为啥报错了还能设置成功(-_-)
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
若通过Dockerfile构建,想从源头开始设置
- 修改Dockerfile中的内容,添加如下代码,然后重新构建即可
RUN yum install -y kde-l10n-Chinese && \
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf && \
yum clean all
ENV LANG="zh_CN.UTF-8" \
LC_ALL="zh_CN.UTF-8"
参考