Lösen Sie das Problem beim Einrichten des chinesischen Sprachpakets für den Docker-Container

Lösen Sie das Problem beim Einrichten des chinesischen Sprachpakets für den Docker-Container

Wenn Sie Docker verwenden, suchen Sie in Docker nach CentOS

Verwenden Sie docker pull docker.io/centos, um das Basisimage herunterzuladen

Dieses Image unterstützt kein Chinesisch. Sie können die Container-ID von Docker Attach verwenden, um den Container aufzurufen, und „Locale“ verwenden, um ihn anzuzeigen.

Sie können "locale -a" verwenden, um das Systemsprachenpaket zu überprüfen, und Sie werden feststellen, dass es kein chinesisches Paket gibt

Lösung:

1. yum install kde-l10n-Chinese -y Sprachpaket installieren (für CentOS 7)

2. yum reinstall glibc-common -y, um das Gitbc-Paket zu aktualisieren (da das Image einige Funktionen des Pakets kastriert hat, muss es aktualisiert werden)

3. localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 (Systemsprachpaket festlegen)

4. ENV LC_ALL zh_CN.UTF-8 wird durch Festlegen von Umgebungsvariablen festgelegt (Sie können die Datei /etc/locale.conf direkt ändern, müssen jedoch einen Neustart durchführen).

5. Wenn Sie Dockerfile verwenden, können Sie sich auf Folgendes beziehen

# Versionsinformationen VON docker.io/centos:latest
WARTUNGSPERSÖNLICH mapengfei „[email protected]“
#Systemkodierung festlegen RUN yum install kde-l10n-Chinese -y
Führen Sie den Befehl yum install glibc-common -y aus.
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
#RUN export 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

Ergänzung: Ändern Sie die Zeichenkodierung des Docker-Containers in den chinesischen Zeichensatz -zh_CN.UTF-8

Versionsverlauf

Erstausgabe am 26. April 2019

Problembeschreibung

Das Java-Projekt des Unternehmens verwendet OpenOffice und PDF2HTML, um das Dateiformat zu konvertieren. Word-, PPT- und PDF-Dateien werden alle problemlos konvertiert, aber Excel zeigt nach der Konvertierung verstümmelte Zeichen an.

Hintergrund

Das Projekt läuft in einem Docker-Container, Docker-Version: Docker-Version 18.06.1-ce, Build e68fc7a

Kernelversion des Containersystems: 3.10.0-514.el7.x86_64

Containersystemversion: Cent0S7

Ursache

Nach der Kommunikation mit dem Architekturbüro erfuhren wir, dass Word-, PDF- und PPT-Dateien über OpenOffice und PDF2HTML konvertiert werden, Excel-Dateien jedoch nicht auf diese Weise verarbeitet werden. Stattdessen werden sie mithilfe von Open-Source-Java-Code im Internet implementiert. Nach dem Lesen des Codes stellte das Architekturbüro fest, dass dieser Code beim Konvertieren von Excel-Dateien die Sprachkonfiguration des Hostsystems liest. Daher wurde festgestellt, dass die Ursache des Problems die Einstellung der Systemzeichenkodierung ist.

Problemumgehung

Wenn wir prüfen, ob die Zeichenkodierung des Systems in Ordnung ist (beachten Sie die ersten drei Zeilen), scheint der Zeichensatz richtig eingestellt zu sein. Überprüfen Sie die ersten drei Zeilen auf Probleme. Im Internet wird gesagt, dass dies daran liegt, dass der chinesische Zeichensatz nicht installiert ist.

[root@4273aa460888 opt]# Gebietsschema
Gebietsschema: LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_MESSAGES kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_ALL kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
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=

Mal sehen, welche Zeichensätze auf diesem Computer installiert sind. Verdammt, es ist kein chinesischer Zeichensatz installiert ... (Wenn er nicht installiert ist, ist er nutzlos, selbst wenn Sie ihn einrichten.)

[root@4273aa460888 opt]# Gebietsschema -a
Gebietsschema: LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_MESSAGES kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
Gebietsschema: LC_COLLATE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis
C
POSIX
de_DE.utf8

Werfen wir einen Blick auf den Inhalt von /etc/locale.conf. Verdammt, es ist immer noch der englische Zeichensatz ...

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

OK, installieren wir als nächstes den chinesischen Zeichensatz

Löschen Sie die Sprachkonfiguration in der Datei yum.conf

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

Installieren Sie Schriftarten und glibc

yum install -y kde-l10n-Chinesisch glibc-common

Schauen wir uns das noch einmal an. Schließlich haben wir

[root@35b0e9b16498 opt]# Gebietsschema -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

Ändern wir die Datei /etc/locale.conf noch einmal

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

Schauen wir uns nochmal die Zeichenkodierung an. OK, es liegen keine Fehler vor und alles ist normal.

[root@35b0e9b16498 opt]# Gebietsschema
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

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Verwenden Sie Nicht-Root-Benutzer, um Skriptvorgänge in Docker-Containern auszuführen
  • Lösung für den Docker-Container, der keine Schreibberechtigung für das Host-Verzeichnis hat
  • Lösung für Docker-Container, der Schriftarten wie Songti nicht erkennt
  • Anleitung zur Vermeidung von Docker Win Ping-Fehlern bei Containern
  • So konfigurieren Sie ein Jupyter-Notebook im Docker-Container
  • Docker implementiert Container-Portbindung am lokalen Port
  • Lösen Sie das Problem, dass der Container nach dem Docker-Lauf „Beendet (0)“ anzeigt.
  • Docker verwendet Root, um in den Container zu gelangen

<<:  Hinweise zur IE8-Kompatibilität, die mir aufgefallen sind

>>:  Beispiel für die Anpassung von rem an mobile Geräte

Artikel empfehlen

Lösung für das img-Tag-Problem unter IE10

Finden Sie das Problem Ich habe vorher eine einfa...

So verwenden Sie xshell zum Herstellen einer Verbindung zu Linux in VMware (2 Methoden)

【Vorwort】 Ich möchte vor Kurzem das Prüfungssyste...

Einige Tipps zur Verwendung von Less in Vue-Projekten

Inhaltsverzeichnis Vorwort 1. Stildurchdringung 1...

Anwendung der MapState-Idee in Vuex

Inhaltsverzeichnis 1. Kartenmethode 2. Anwendung ...

Teilen Sie 5 JS-High-Order-Funktionen

Inhaltsverzeichnis 1. Einleitung 2. Rekursion 3. ...

So begrenzen Sie die Anzahl der Datensätze in einer Tabelle in MySQL

Inhaltsverzeichnis 1. Lösung auslösen 2. Partitio...

vue-pdf realisiert Online-Dateivorschau

In diesem Artikelbeispiel wird der spezifische Co...

Lösen Sie schnell das Problem des langsamen Tomcat-Starts, super einfach

Heute habe ich einem Klassenkameraden geholfen, e...

Beispielcode zur Implementierung der PC-Auflösungsanpassung in Vue

Inhaltsverzeichnis planen Abhängigkeiten installi...

4 Möglichkeiten, sich schnell Linux-Befehle selbst beizubringen

Wenn Sie ein Linux-Meister werden möchten, ist di...