Dockerコンテナの文字コードを-zh_に変更CN.UTF-8中国語文字セット


  • バージョンレコード
  • 2019.4.26日第1版
    問題の説明
    会社のjavaプロジェクトの中でopenofficeとpdf 2 htmlを使ってファイルに対してフォーマットの変換を行って、word、ppt、pdfファイルはすべて変換して問題がなくて、ただexcelが変換した後に文字化けを表示します
    背景紹介
    プロジェクトはDockerコンテナで実行され、Dockerバージョン:Docker version 18.06.1-ce,build e 68 fc 7 a
    コンテナシステムのカーネルバージョン:3.10.0-514.el7.x86_64
    容器システムのヘアスタイルバージョン:Cent 0 S 7
    障害要因
    アーキテクチャとの溝が通るとword,pdf,pptファイルはopenofficeとpdf 2 htmlで変換されていることが分かったが,excelファイルはこのように処理されず,ネット上でオープンソースのjavaコードで実現され,アーキテクチャはコードを見てexcelファイルを変換する際にこのコードがホストシステムの言語構成を読み取ったことが分かった.そこで問題の原因を特定したのがシステム文字符号化設定である.
    解決策
    システムの文字コードを確認しても問題ありません(最初の3行に注意してください).文字セットの設定が正しいようです.最初の3行の問題を調べてみると、ネット上では中国語の文字セットがインストールされていないためだという.
    [root@4273aa460888 opt]# 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
    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=
        

    私达は1册の机がすべてどれらの文字セットをインストールしたことを见て、私は拭いて、やはり中国语の文字セットをインストールしていません.....(インストールしていなくても設置しても無駄です)
    [root@4273aa460888 opt]# locale -a
    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_COLLATE to default locale: No such file or directory
    C
    POSIX
    en_US.utf8

    もう一度見てみろconfの内容、乾、それとも英語の文字セット......
    [root@4273aa460888 opt]# cat /etc/locale.conf 
    LANG="en_US.UTF-8"

    では、次に中国語の文字セットをインストールします.
      yum.conf        
    sed -i '13'd /etc/yum.conf
    glibc
    yum install -y kde-l10n-Chinese glibc-common

    もう一度見てみましょう.やっとありました.
    [root@35b0e9b16498 opt]# locale -a|grep zh
    zh_CN
    zh_CN.gb18030
    zh_CN.gb2312
    zh_CN.gbk
    zh_CN.utf8
    zh_HK
    zh_HK.big5hkscs
    zh_HK.utf8
    zh_SG
    zh_SG.gb2312
    zh_SG.gbk
    zh_SG.utf8
    zh_TW
    zh_TW.big5
    zh_TW.euctw
    zh_TW.utf8

    もう一度変更します.confファイル
    echo -e 'export LANG="zh_CN.UTF-8"
    export LC_ALL="zh_CN.UTF-8"' > /etc/locale.conf
    source /etc/locale.conf

    文字コードをもう一度見てみましょう.はい、エラーはありません.すべて正常です.
    [root@35b0e9b16498 opt]# 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=zh_CN.UTF-8

    補足情報
  • なし
    知識の拡張
  • なし