Dockerコンテナの文字コードを-zh_に変更CN.UTF-8中国語文字セット
問題の説明
会社の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
補足情報
知識の拡張