事情是这样的,在使用docker部署Hadoop集群的时候,完成之后将一些文件名含中文字样的文件上传到集群发现没有上传成功,这些文件是在容器与宿主机挂载的文件夹中的,进入容器查看文件的时候发现下面这样的东西:

dataset  dataset??????2.jpg  dataset??????2.jpg?????????.jpg

显然是是docker中中文显示除了问题,上网查才知道docker中文显示是个经常遇到的问题.

先说网上绝大部分的解决方案,(然而我多次实验并没有解决问题)

可以使用如下的命令进行查看容器的编码格式,

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=zh_CN.UTF-8
LANGUAGE=
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

locale -a查看容器所有语言环境

C
C.UTF-8
POSIX

接着这里是网上的解决方法:

LANG=C.UTF-8

然后再激活:

source /etc/profile

然而实际上这样显示是没有出问题了,但是我的hdfs命令却失效了!!!

提示command not find

然而发现不使用激活环境激活语句,直接也就可以看到中文正常显示了,或者使用这样进行环境变量的设置:

export LANG=C.UTF-8

容器中其命令语句失效时,注意是否是使用了source /etc/profile语句.

Logo

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

更多推荐