作成者: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_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 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
システム文字セットを変更する
システム文字セットの構成ファイルを変更します。
# echo 'LANG="zh_CN.UTF-8"'>/etc/locale.conf
# source /etc/locale.conf
または、文字セットを一時的に変更します。
LANG="<キャラクターセット>"
LANG="zh_CN.UTF-8"
# または、文字セット環境変数をプロファイルに書き込みます
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_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
それでも文字化けする場合は、フォントのインストールパスを入力し、次のコマンドを実行します
[ 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_NAME="POSIX"
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
Recommended Posts