去评论
海欣资源

如何处理Docker容器中文显示乱码问题

docker
2022/06/01 00:32:51
Docker 是一个开源软件,也是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
当在容器中查看文件时,无法正常显示中文,如下所示:

定位
输入locale指令查看容器使用的语言集:

  1. locale: Cannot set LC_CTYPE to default locale: No such file or directory
  2. locale: Cannot set LC_MESSAGES to default locale: No such file or directory
  3. locale: Cannot set LC_ALL to default locale: No such file or directory
  4. LANG=en_US.UTF-8
  5. LANGUAGE=
  6. LC_CTYPE="en_US.UTF-8"
  7. LC_NUMERIC="en_US.UTF-8"
  8. LC_TIME="en_US.UTF-8"
  9. LC_COLLATE="en_US.UTF-8"
  10. LC_MONETARY="en_US.UTF-8"
  11. LC_MESSAGES="en_US.UTF-8"
  12. LC_PAPER="en_US.UTF-8"
  13. LC_NAME="en_US.UTF-8"
  14. LC_ADDRESS="en_US.UTF-8"
  15. LC_TELEPHONE="en_US.UTF-8"
  16. LC_MEASUREMENT="en_US.UTF-8"
  17. LC_IDENTIFICATION="en_US.UTF-8"
  18. LC_ALL=
可以看到只有英文的语言集,因此需要额外添加中文语言集。
解决
打开bash.bashrc
vi /etc/bash.bashrc

添加:
export LC_ALL="C.UTF-8"

然后:
source /etc/bash.bashrc
退出容器后重新进入,查看带中文的文件:


输入locale查看语言情况:

  1. LANG=en_US.UTF-8
  2. LANGUAGE=
  3. LC_CTYPE="C.UTF-8"
  4. LC_NUMERIC="C.UTF-8"
  5. LC_TIME="C.UTF-8"
  6. LC_COLLATE="C.UTF-8"
  7. LC_MONETARY="C.UTF-8"
  8. LC_MESSAGES="C.UTF-8"
  9. LC_PAPER="C.UTF-8"
  10. LC_NAME="C.UTF-8"
  11. LC_ADDRESS="C.UTF-8"
  12. LC_TELEPHONE="C.UTF-8"
  13. LC_MEASUREMENT="C.UTF-8"
  14. LC_IDENTIFICATION="C.UTF-8"
  15. LC_ALL=C.UTF-8
中文显示支持设置成功。