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

本文详细介绍了如何在Linux系统中查看、安装、修改和验证中文字符集,包括CentOS6.x和7.x的区别,以及如何在SSH终端和Docker容器环境中设置中文字符集。通过yum命令安装相关包,修改配置文件,并展示Dockerfile示例。
摘要由CSDN通过智能技术生成

作者:willblog,
原文:https://blog.csdn.net/networken/article/details/97951173

说明

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

查看当前字符集

$ echo $LANG
en_US.UTF-8

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

$ locale
LANG=en_US.UTF-8
LC_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_
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 CN
bo_CN
bo_CN.utf8
ug_CN
ug_CN.utf8
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

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

#CentOS6.x:
yum groupinstall chinese-support
#CentOS7.x
yum install -y kde-l10n-Chinese
yum 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"
#或者把字符集环境变量写到profile
vim /etc/profile
source /etc/profile

验证字符集修改

# echo $LANG
zh_CN.UTF-8
# locale
LANG=zh_CN.UTF-8
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_
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 sh
sh-4.2# echo $LANG
sh-4.2# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
sh-4.2# locale -a
C
POSIX
en_US.utf8

以配置 zh_CN.GB18030 字符集为例

yum install -y kde-l10n-Chinese
yum reinstall -y glibc-common
localedef -c -f GB18030 -i zh_CN zh_CN.GB18030
#验证成功加载中文语言包zh_CN.gb18030
# locale -a
C
POSIX
en_US.utf8
zh_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 $LANG
zh_CN.GB18030

Dockerfile 示例:

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

# cat Dockerfile
FROM centos
LABEL Maintainer dockerhub.com
RUN 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值