docker 学习 - 解决ubuntu镜像中文乱码问题

1. 配置Dockerfile镜像时,永久修改。

在 Dockerfile 中添加

ENV LANG C.UTF-8
# ENV LANGUAGE C.UTF-8 #可不配置
# ENV LC_ALL C>UTF-8 #可不配置
Dockerfile example

2. 在运行的Container中,进行修改。

先输入locale -a,查看一下现在已安装的语言,已经有C.UTF-8字符集

locale -a

输入locale查看下语言情况,显示语言不正确。

图片里显示语言不对

通常设置`LANG、LANGUAGE、LC_ALL`这三个就行了。
关于他们三的关系简言之:
LANG默认设置,LC_*没设值的时候就拿LANG;LANGUAGE是程序语言设置;LC_ALL强制设置所有LC_*
详细传送门: [https://blog.csdn.net/nick357/article/details/8513699]

/etc/bash.bashrc里面末尾写入,然后source /etc/bash.bashrc

export LC_ALL="C.UTF-8"

输入locale查看下语言情况,显示没有设置成功。

image.png

登出在登陆查看下,设置成功。


image.png

3. 在运行的Container中,安装新字符集进行修改。

先输入locale -a,查看一下现在已安装的语言。如果没有zh_CN.utf8就需要安装中文字符集和设置中文字符支持。

# 如果安装 language-pack-zh-hans 失败,那么需要更新下系统。
# apt-get update & apt-get upgrade。
# 安装字符集
apt-get install -y language-pack-zh-hans;
# 添加中文支持
# zh_CN.UTF-8 等于 zh_CN.utf8
locale-gen zh_CN.UTF-8;

其他的按 2 进行就OK。或者可以重启docker容器
传送门:http://www.nikochan.cc/2017/10/30/DockerSolution/ 经检查,里面的临时修改方法是无效的


4. 启动时或进入bash时候,设置字符集

# env LANG=C.UTF-8 /bin/bash bash运行env设置LANG环境
docker run -i -t ubuntu env LANG=C.UTF-8 /bin/bash
docker run -i -t ubuntu env LANG=C.UTF-8 /bin/bash

or

docker exec -it ww env LANG=C.UTF-8 bash
docker exec -it ww env LANG=C.UTF-8 bash

传送门:http://blog.shiqichan.com/Input-Chinese-character-in-docker-bash/

推荐阅读更多精彩内容