問題の背景:docker を使用してプロジェクトをデプロイする場合、プロジェクト内で印刷コントロールを呼び出すときに、デフォルトでシステム フォントが使用されます。Windows にデプロイする場合は問題ありません。ただし、docker コンテナーで実行すると、docker 内に Songti などの関連フォントがないため、システムからエラーが報告され、対応するフォントが見つかりません。 解決:実は、Linux 自体に Song フォントがない問題を解決するのと同じように、コンテナの問題を解決するのにも使用できます。多くの Docker コンテナの問題は、実際には Linux ソリューションに従うことで解決できることがわかりました。基本的には、Songti ttf ファイルと ttc ファイルをダウンロードし、それらをコンテナのフォント ディレクトリに挿入して、コンテナを再起動するだけです。 解決:1. コンテナーでサポートされているフォントを確認します。 fc-list :lang=zh 次のような状況が表示される場合は、フォント管理がインストールされておらず、フォントをインストールする必要があることを意味します。 2. フォントライブラリをインストールします。 yum -y フォント設定をインストールします インストールが完了すると、図に示すように、/usr/share ディレクトリに fontconfig フォルダと fonts フォルダが表示されます。 3. ダウンロードしたフォント ttc および ttf ファイルをコンテナの /usr/share/fonts ファイルにコピーします。 cp simsun.ttc コンテナ:/usr/share/fonts cp simsun.ttf コンテナ:/usr/share/fonts 4. コンテナを再起動すると、インストールされた中国語フォントが表示されます。 5. この手順を Dockerfile に記述して、イメージのビルド時に自動的に実装することもできます。 補足: Docker | Docker コンテナに中国語フォントをインストールし、utf-8 エンコードを変更する (中国語の文字化け問題を解決する) 1. プロジェクトの背景開発チームから、プロジェクト運用中に、pagoffice と word を使用して pdf に変換すると文字化けが発生するという報告がありました。この問題は解決されたため、レビュー用にこの記録が作成されました。 2. 問題分析pagoffice と word を使用して pdf に変換するときに文字化けが発生する問題が 2 つあります。対応する関係は次のとおりです。 pagoffice ---- UTF-8 エンコーディングは使用されず、一部の Docker コンテナでは POSIX がデフォルトで使用されます。 word2pdf ---- 中国語フォントは Linux にインストールされておらず、欠落しています。一部の中国語フォントは Linux および Docker コンテナーにデフォルトでインストールされていますが、中国語フォントは存在しません。 まとめると、コンテナの文字化けの問題を完全に解決するには、次の点を解決する必要があります。1. 中国語をサポートするために utf-8 を使用する。2. 中国語フォントをインストールする。 3. 解決策3.1. 中国語をサポートするにはUTF-8エンコードを使用する3.1.1 C.UTF-8エンコーディングの使用 C.UTF-8 エンコーディングを使用すると中国語をサポートできます。公式サイトの Docker イメージはデフォルトで C.UTF-8 エンコーディングをサポートし、使用します。 ロケール -a #コンテナのすべての言語環境を表示する ロケール #コンテナが使用する言語環境を表示する 使用しているイメージが C.UTF-8 でエンコードされていない場合は、コンテナの実行時に次のパラメータを追加することで、このエンコード形式に変更できます。 -e エクスポート LANG="C.UTF-8" 3.1.2 その他の解決策 Docker を起動するときにパラメータを追加することもできます。 -e エクスポート LANG="zh_CN.UTF-8" しかし、docker公式サイトのイメージを使用しました。パラメータを使用した後、確かに「zh_CN.UTF-8」を使用するように設定されていましたが、インストールされませんでした。エラーが発生します: ロケール # 設定された文字セットを表示する ロケール: 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= ロケール -a # インストールされている文字セットを表示する ロケール: LC_CTYPE をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません ロケール: LC_MESSAGES をデフォルトのロケールに設定できません: そのようなファイルまたはディレクトリはありません ロケール: LC_COLLATE をデフォルトに設定できません ロケール: そのようなファイルまたはディレクトリはありません C POSIX en_US.utf8 3.2. 中国語フォントをインストールして中国語を表示する3.2.1 既存のフォントを表示する Linux の現在のフォントをすべて表示 fcリスト Linux で現在利用可能なすべての中国語フォントを表示する fc-list :lang=zh 3.2.2 他のフォントを入手する Windows システムでは、フォントは C:\Windows\Fonts の下に存在します。コピー後、Linux サーバーの /opt/software/chinese にアップロードします (docker コンテナーにフォントをインストールします。Linux ホストにフォントをインストールする場合は、サーバーの /usr/share/fonts/ フォルダーに直接配置します)。 3.2.2 コンテナへのフォントのインストール ドッカーps -a #コンテナの表示 docker cp /opt/software/chinese tomcat:/usr/share/fonts/ #tomcatはコンテナ名です docker exec -it tomcat /bin/bash #コンテナに入る chmod 644 -R 中国語/ 承認フォルダ fc-list :lang=zh #中国語フォントを表示 fc-キャッシュ -fv # キャッシュを更新する 3.3. 検証pagoffice ---- dockerコンテナを変更した後は、コンテナを再起動する必要があります word2pdf ---- フォントキャッシュを更新します。コンテナを再起動する必要はありません。 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: ウェブサイトの再設計はどの家族にとっても難しい作業です
1. Linux で Selenium を使用する1. Chromeをインストールする次のコマンドを...
マージントップの崩壊とはmargin-top の崩壊は、CSS ボックス モデルで発生する現象です。...
クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...
MySQL Limit はセグメント内のデータベース データをクエリでき、主にページングで使用されま...
1. スケジュールタスクを作成する命令crontab -eは現在のユーザーの編集インターフェースに入...
目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...
より良いスクロールの原則親コンテナーであるため、ラッパーの高さはコンテンツのサイズに応じて増加します...
この記事の例では、ドロップダウンボックス選択コンポーネントを実装するためのjsの具体的なコードを参考...
フォームのフロントエンド レイアウトでは、テキスト ボックスのプロンプト テキストを両端に揃える必要...
多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...
React Router を理解したいなら、まず歴史を理解する必要があります。より具体的には、Rea...
CI を利用してリリース用の Docker イメージをビルドすることで、全員のバージョンリリース効率...
序文スロークエリとは何か、またスロークエリを最適化するにはどうすればよいか。以下では、これら 2 つ...
文字列連結ではなく path.join() メソッドを使用する必要があるのはなぜか疑問に思うかもしれ...
目次1. 書き込み可能: 書き込み可能2. 列挙可能: 列挙可能3. 設定可能: 設定可能オブジェク...