docker容器不显示中文

打算搬迁自己的笔记到组里的服务器上,又因为是服务器,对环境限制比较多,不会随便安装一些包和lib库,所以大家基本上都是docker开自己的容器用。

然后:

image-20240314104511933

终端无法显示中文,实际上zsh的命令补全还是能显示中文的,但是终端就是不行

image-20240314104637839

按照找到的教程,localelocale -a查看本地正在使用以及支持的字符集:

image-20240314104823601

这里看到LC_ALL=C,按照某个教程里的说法,C就是POSIX,是不支持中文显示的,修改为zh_CN.utf8或者C.utf8就可以了,实测都是有效的,似乎是排序上有一些不同

image-20240314105152076

后记

关于各种LC_*变量以及LANG变量,看到的说法是LC_ALL是指定所有的字符集设置[2],看到很多教程上说让修改LANG变量,实际上试了一下是没用的

比如LANG=C.utf8LC_ALL=C,可以看到还是显示不了中文:

image-20240314105437274

包括把LANG设置为zh_CN.utf8也没有用:

image-20240314105558850

总的来说就是,只要LC_ALL是不支持中文字符的C,修改LANG就没有用,主要是LC_ALL变量的设置,因为设置了LC_ALL变量,其他的LC_*变量也都修改了,但是只设置LANG就会只修改LANG,如图修改LC_ALL

image-20240314105921600

and,很多教程里有的地方写的是zh_CN.UTF-8,有的是zh_CN.utf-8,测试了一下,设置LC_ALL=zh_CN.UTF-8也是有效的,但我觉得还是和locale -a的某一行输出(for example zh_CN.utf8)里保持一致可能会好一点,这一点可能需要去翻一翻文档去确认一下怎么设置最规范,但是我没有去翻

如果locale -a输出里没有自己需要的字符集,可以通过dpkg-reconfigure locales安装,如果显示没有locales,需要安装locales[1]

后后记

无语,忘记是什么时候的事,.zshrc里我自己添加了字符集的设置:

image-20240314111948828

我就说为什么设置了/etc/environment没有用,总之,不管是/etc/environment还是.zshrc,能把LC_ALL变量设置成zh_CN.utf8而不是C就行

References


docker容器不显示中文
http://zr4in.github.io/2024/03/14/docker容器不显示中文/
作者
zr4in
发布于
2024年3月14日
许可协议