前言

之前的Dockerfile基于的基础镜像都是ubuntu14.04,现在ubuntu的版本已经升到了18.04(听说有大BUG),14版本很快也不更新了,所以就准备先升级到16.04。但是在升级的过程中发现14和16版本对中文乱码的处理上有些不同,在这里记录一下

ubuntu1404处理方式

RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

ubuntu 16.04处理方式

  • 先使用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 -a命令查看系统支持哪些语言
C
C.UTF-8
POSIX

其中C.UTF-8是支持中文的,所以需要在Dockerfile中加入如下内容

ENV LANG C.UTF-8
  • 重新生成镜像后在运行locale就会发现已经支持中文了
LANG=C.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=
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐