ubuntu 官方镜像默认的字符集支持 C
, C.UTF-8
, and POSIX
查看容器使用的字符集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| root@huige-demo-web-0:/var/www/html/forum/files# locale LANG= LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
|
要使容器内进程可以打开中文文件,需要将 locale
设置成 C.UTF-8
即可
修改 Dockerfile
,添加 ENV
重新构建,运行,再次查看 locale
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| root@4d4501013874:/# locale LANG=c.utf8 LANGUAGE= LC_CTYPE="c.utf8" LC_NUMERIC="c.utf8" LC_TIME="c.utf8" LC_COLLATE="c.utf8" LC_MONETARY="c.utf8" LC_MESSAGES="c.utf8" LC_PAPER="c.utf8" LC_NAME="c.utf8" LC_ADDRESS="c.utf8" LC_TELEPHONE="c.utf8" LC_MEASUREMENT="c.utf8" LC_IDENTIFICATION="c.utf8" LC_ALL=
|
如果想让容器内可以正常显示中文(应该没人想这么干吧),需要先安装 locale
然后将 locale
设置成 zh_CN.UTF-8
修改 Dockerfile
,添加
1 2 3
| RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8 ENV LANG zh_CN.utf8
|
然后就可以完美显示中文了