Dockerコンテナの中国語言語パックの設定の問題を解決する

Dockerコンテナの中国語言語パックの設定の問題を解決する

Dockerでdocker search centosを使用する場合

docker pull docker.io/centos を使用してベースイメージをダウンロードします。

このイメージは中国語をサポートしていません。docker attach container ID を使用してコンテナーに入り、「locale」を使用して表示することができます。

「locale -a」を使用してシステム言語パッケージを確認すると、中国語パッケージがないことがわかります。

解決:

1. yum install kde-l10n-Chinese -y 言語パックをインストールします (Centos 7 の場合)

2. yum reinstall glibc-common -y を実行して gitbc パッケージを更新します (イメージによってパッケージの一部の機能が削除されているため、更新する必要があります)

3. localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 (システム言語パックを設定)

4. ENV LC_ALL zh_CN.UTF-8 は環境変数を設定することで設定されます (/etc/locale.conf ファイルを直接変更できますが、再起動が必要です)

5. Dockerfileを使用する場合は、以下を参照してください。

# バージョン情報 docker.io/centos:latest
メンテナー mapengfei "[email protected]"
#システムエンコーディングを設定する RUN yum install kde-l10n-Chinese -y
yum install glibc-common -yを実行します。
実行 localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
#RUN エクスポート LANG=zh_CN.UTF-8
#RUN echo "export LANG=zh_CN.UTF-8" >> /etc/locale.conf
#ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8

補足: Dockerコンテナの文字エンコーディングを-zh_CN.UTF-8中国語文字セットに変更します

バージョン履歴

2019年4月26日初版

問題の説明

同社の Java プロジェクトでは、ファイル形式の変換に OpenOffice と pdf2html を使用しています。Word、ppt、pdf ファイルはすべて問題なく変換されますが、Excel では変換後に文字化けが発生します。

背景

プロジェクトは Docker コンテナで実行されます。Docker バージョン: Docker バージョン 18.06.1-ce、ビルド e68fc7a

コンテナ システム カーネル バージョン: 3.10.0-514.el7.x86_64

コンテナシステムバージョン: Cent0S7

原因

アーキテクチャとやり取りした結果、Word、PDF、PPTファイルはOpenOfficeとPDF2HTMLで変換されますが、Excelファイルはこの方法で処理されず、インターネット上のオープンソースのJavaコードを使用して実装されていることがわかりました。コードを読んだ後、アーキテクチャは、このコードがExcelファイルを変換するときにホストシステムの言語構成を読み取ることを発見したため、問題の原因はシステムの文字エンコード設定であると判断されました。

回避策

システムの文字エンコードを確認すると、問題はありません (最初の 3 行に注目してください)。文字セットは正しく設定されているようです。最初の 3 行に問題がないか確認してください。オンラインでは、これは中国語の文字セットがインストールされていないことが原因であると言われています。

[root@4273aa460888 opt]# ロケール
ロケール: LC_CTYPE をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません
ロケール: LC_MESSAGES をデフォルトのロケールに設定できません: そのようなファイルまたはディレクトリはありません
ロケール: LC_ALL をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません
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=

このマシンにどの文字セットがインストールされているか確認してみましょう。 しまった、中国語の文字セットがインストールされていない... (インストールされていないと、設定しても役に立たない)

[root@4273aa460888 opt]# ロケール -a
ロケール: LC_CTYPE をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません
ロケール: LC_MESSAGES をデフォルトのロケールに設定できません: そのようなファイルまたはディレクトリはありません
ロケール: LC_COLLATE をデフォルトに設定できません ロケール: そのようなファイルまたはディレクトリはありません
C
POSIX
en_US.utf8

/etc/locale.conf の内容を見てみましょう。 ああ、まだ英語の文字セットのままです...

[root@4273aa460888 opt]# cat /etc/locale.conf 
LANG="en_US.UTF-8"

さて、次に中国語の文字セットをインストールしましょう

yum.confファイル内の言語設定を削除します。

sed -i '13'd /etc/yum.conf

フォントとglibcをインストールする

yum インストール -y kde-l10n-中国語 glibc-common

もう一度見てみましょう。最後に、

[root@35b0e9b16498 opt]# ロケール -a|grep zh
日本語
原文
翻訳元
翻訳元
utf8 形式
日本語
翻訳元
utf8 の
翻訳
原文
翻訳元
utf8 は、
日本語
翻訳元
zh_TW.euctw
utf8 は

/etc/locale.confファイルを再度変更してみましょう

echo -e 'export LANG="zh_CN.UTF-8"\nexport LC_ALL="zh_CN.UTF-8"' > /etc/locale.conf
ソース /etc/locale.conf

もう一度文字エンコードを見てみましょう。エラーはなく、すべて正常です。

[root@35b0e9b16498 opt]# ロケール
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

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • 非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する
  • Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策
  • DockerコンテナがSongtiなどのフォントを認識しない場合の解決策
  • Docker の win ping 失敗コンテナ回避ガイド
  • DockerコンテナでJupyterノートブックを設定する方法
  • Dockerはコンテナポートバインディングのローカルポートを実装します
  • docker run後にコンテナがExited (0)と表示される問題を解決する
  • Dockerはコンテナに入るためにルートを使用する

<<:  私が遭遇したIE8の互換性に関する注意事項

>>:  rem をモバイル デバイスに適応させる方法の例

推薦する

TypeScript 名前空間のマージの説明

目次同じ名前の名前空間をマージする名前空間とその他の種類のマージ同じ名前の名前空間とクラスをマージす...

テーブルセルの幅tdの設定は無効であり、内部コンテンツによって常に引き伸ばされます

テーブルページを作成するときに、td に設定された幅が無効になることがあります。td の幅は常に内部...

VMware マルチノード環境を構成する方法

このチュートリアルでは CentOS 7 64 ビットを使用します。各仮想マシンに 2GB のメモリ...

Vueでフォームデータを取得する方法

目次必要データを取得して送信するテンプレートフィルターフィルターの使用シナリオ要約する必要Vue を...

Windows と Linux 間のリモート デスクトップ接続

Linux へのリモート デスクトップ接続といえば、まず VNC の使用を思い浮かべるかもしれません...

mysql5.7でbinlogを使用してデータを復元する方法

ステップ1: MySQLでbinlogが有効になっていることを確認する '%log_bin%...

Pycharmとsshリモートアクセスサーバーdockerの詳細なチュートリアル

背景: 一部の実験はサーバー上で完了する必要があります。したがって、リモート サーバー上のコードをロ...

CentOS 8 に Postfix メール サーバーをインストールして設定する方法

Postfix は、Linux システム上で電子メールをルーティングまたは配信するために使用される無...

IntelliJ IDEA に Docker プラグインをインストールする詳細な手順 (2018 バージョン)

目次1. 開発環境2. dockerプラグインをインストールする1. アイデアのインストール2. イ...

Vue プロジェクトで TypeScript クラスを適用する方法

目次1. はじめに2. 使用1. @コンポーネント2. 計算、データ、方法3. @props 4. ...

Linux ホスト上で複数の MySQL データベースを起動する方法

今日は、Linux ホスト上で 4 つの MySQL データベースを起動する方法について説明します。...

DockerはClickHouseをインストールし、データテストを初期化します

クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...

spring-boot と docker-java に基づいて Docker コンテナの動的な管理と監視を実装します [完全なソース コードのダウンロード付き]

Docker入門Docker はオープンソースのアプリケーション コンテナ エンジンです。従来の仮...

Dockerfile テキストファイルの使用例の分析

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...

Docker に Zookeeper を素早くインストールする方法の詳細なチュートリアル

Docker で Zookeeper を素早くインストール会社を変わってから長らくZookeeper...