如何处理Docker容器中文显示乱码问题
Docker 是一个开源软件,也是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
当在容器中查看文件时,无法正常显示中文,如下所示:
定位
输入locale指令查看容器使用的语言集:
可以看到只有英文的语言集,因此需要额外添加中文语言集。
解决
打开bash.bashrc
vi /etc/bash.bashrc
添加:
export LC_ALL="C.UTF-8"
然后:
source /etc/bash.bashrc
退出容器后重新进入,查看带中文的文件:
输入locale查看语言情况:
中文显示支持设置成功。
当在容器中查看文件时,无法正常显示中文,如下所示:
定位
输入locale指令查看容器使用的语言集:
- locale: Cannot set LC_CTYPE to default locale: No such file or directory
- locale: Cannot set LC_MESSAGES to default locale: No such file or directory
- locale: Cannot set LC_ALL to default locale: No such file or directory
- LANG=en_US.UTF-8
- LANGUAGE=
- LC_CTYPE="en_US.UTF-8"
- LC_NUMERIC="en_US.UTF-8"
- LC_TIME="en_US.UTF-8"
- LC_COLLATE="en_US.UTF-8"
- LC_MONETARY="en_US.UTF-8"
- LC_MESSAGES="en_US.UTF-8"
- LC_PAPER="en_US.UTF-8"
- LC_NAME="en_US.UTF-8"
- LC_ADDRESS="en_US.UTF-8"
- LC_TELEPHONE="en_US.UTF-8"
- LC_MEASUREMENT="en_US.UTF-8"
- LC_IDENTIFICATION="en_US.UTF-8"
- LC_ALL=
解决
打开bash.bashrc
vi /etc/bash.bashrc
添加:
export LC_ALL="C.UTF-8"
然后:
source /etc/bash.bashrc
退出容器后重新进入,查看带中文的文件:
输入locale查看语言情况:
- LANG=en_US.UTF-8
- LANGUAGE=
- LC_CTYPE="C.UTF-8"
- LC_NUMERIC="C.UTF-8"
- LC_TIME="C.UTF-8"
- LC_COLLATE="C.UTF-8"
- LC_MONETARY="C.UTF-8"
- LC_MESSAGES="C.UTF-8"
- LC_PAPER="C.UTF-8"
- LC_NAME="C.UTF-8"
- LC_ADDRESS="C.UTF-8"
- LC_TELEPHONE="C.UTF-8"
- LC_MEASUREMENT="C.UTF-8"
- LC_IDENTIFICATION="C.UTF-8"
- LC_ALL=C.UTF-8