CentOS7及Docker配置中文字符集问题

Posted K8S中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7及Docker配置中文字符集问题相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/networken/article/details/97951173


说明

Linux系统默认使用英文字符集,不会安装中文字符集等其他字符。

查看当前字符集

$ echo $LANGen_US.UTF-8


安装字符集
使用locale命令看看当前系统所使用的字符集


$ localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_PAPER="en_US.UTF-8"LC_NAME="en_US.UTF-8"LC_ADDRESS="en_US.UTF-8"LC_TELEPHONE="en_US.UTF-8"LC_MEASUREMENT="en_US.UTF-8"LC_IDENTIFICATION="en_US.UTF-8"LC_ALL=


查看系统是否安装中文字符集支持


# locale -a | grep CNbo_CNbo_CN.utf8ug_CNug_CN.utf8zh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.utf8


若没有执行以下命令进行安装


#CentOS6.x:yum groupinstall chinese-support
#CentOS7.xyum install -y kde-l10n-Chineseyum reinstall -y glibc-common
#定义字符集localedef -c -f UTF-8 -i zh_CN zh_CN.UFT-8#确认载入成功locale -a


修改系统字符集
修改系统字符集的配置文件:

  • Centos6.x字符集配置文件:

    /etc/sysconfig/i18n

  • Centos7.x字符集配置文件:

    /etc/locale.conf


# echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf# source /etc/locale.conf


或者临时改变字符集:


LANG="<字符集>"LANG="zh_CN.UTF-8"
#或者把字符集环境变量写到profilevim /etc/profilesource /etc/profile


验证字符集修改


# echo $LANGzh_CN.UTF-8
# localeLANG=zh_CN.UTF-8LC_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=


修改ssh终端字符集

如果按照以上方法设置修改设置中文语言还是不行,注意SSH终端选择的编码,如xshell为例,把终端的编码选择中文,或者UTF8即可。
如果系统界面依然出现乱码,再安装以下包:


yum groupinstall "fonts" -y
如果还是乱码,进入fonts安装路径执行以下命令[root@localhost ~]# cd /usr/share/fonts/[root@localhost ~]# fc-cache -fv


容器环境配置字符集

以CentOS7容器镜像为例
查看默认配置


# docker run -it --rm centos shsh-4.2# echo $LANG
sh-4.2# localeLANG=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=
sh-4.2# locale -aCPOSIXen_US.utf8


以配置zh_CN.GB18030字符集为例


yum install -y kde-l10n-Chineseyum reinstall -y glibc-commonlocaledef -c -f GB18030 -i zh_CN zh_CN.GB18030
#验证成功加载中文语言包zh_CN.gb18030# locale -aCPOSIXen_US.utf8zh_CN.gb18030


修改字符集配置


$ cat /etc/locale.conf LANG="en_US.UTF-8"$ echo 'LANG="zh_CN.GB18030"' > /etc/locale.conf && source /etc/locale.conf$ echo "export LC_ALL=zh_CN.GB18030" >> /etc/profile && source /etc/profile
#验证配置生效$ echo $LANGzh_CN.GB18030


Dockerfile示例:

docker容器环境需要基于dockerfile制作对应字符集镜像,追加以下内容到自定义dockerfile中:

# cat DockerfileFROM centosLABEL Maintainer dockerhub.comRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && yum -y install kde-l10n-Chinese \ && yum -y reinstall glibc-common \ && localedef -c -f GB18030 -i zh_CN zh_CN.GB18030 \ && echo 'LANG="zh_CN.GB18030"' > /etc/locale.conf \ && source /etc/locale.conf \ && yum clean all ENV LANG=zh_CN.GB18030 \ LC_ALL=zh_CN.GB18030


END


K8S线上直播培训推荐
本次课程围绕:Docker容器、Docker镜像、Docker网络、数据持久化、Docker最佳实践、Kubernetes集群安装、服务部署、Pod、集群资源管理、控制器、网络、调度、服务发现、存储、Helm、监控、DevOps等。 课程全部采用直播方式,实时互动,专属交流群课后答疑,专属课件文档,每章节课后作业跟踪,课后视频无限回看。



点击阅读原文,直达报名链接!

以上是关于CentOS7及Docker配置中文字符集问题的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7安装docker及基本配置

Centos7配置Docker Swarm及安装Portainer

centos7一步一步搭建docker phpmyadmin 及nginx配置phpmyadmin非根目录重点讲解

DOCKER中centos7的中文支持

Centos7 用docker 搭建jenkins

Centos7修改Docker默认存储位置