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

Von Vue berechnete Eigenschaften

Inhaltsverzeichnis 1. Grundlegende Beispiele 2. B...

Zusammenfassung der MySQL InnoDB-Architektur

Inhaltsverzeichnis Einführung 1. Gesamtarchitektu...

Unterschiede im Stundentrennzeichen zwischen Browsern

Beim Erstellen einer Webseite verwenden Sie manchm...

Best Practices-Handbuch für partitionierte MySQL-Tabellen

Vorwort: Partitionierung ist ein Tabellenentwurfs...

So installieren und konfigurieren Sie den Apache-Webserver

Erfahren Sie, wie Sie Ihre eigene Website auf Apa...

So implementieren Sie eine geplante Sicherung der CentOS MySQL-Datenbank

Das folgende Skript wird für die geplante Sicheru...

Detaillierte Erklärung der Verwendung des Linux-Befehls nslookup

[Wer ist nslookup?] 】 Der Befehl nslookup ist ein...

HTML-Tabelle_Powernode Java Academy

Um eine Tabelle in HTML zu zeichnen, verwenden Si...