Ein Debugging-Prozessprotokoll für chinesische Zeichentrickfiguren in der Startkonsole des Tomcat-Quellcodes

Ein Debugging-Prozessprotokoll für chinesische Zeichentrickfiguren in der Startkonsole des Tomcat-Quellcodes

Finden Sie das Problem

Heute werde ich den Tomcat-Quellcode studieren. Also habe ich den Tomcat-Quellcode von der offiziellen Website heruntergeladen, ihn in IDEA importiert, das Maven-Tool zum Erstellen des Projekts verwendet, das Projekt gestartet und die Konsole hat das Tomcat-Protokoll gedruckt, aber die chinesischen Schriftzeichen waren verstümmelt.

Zuerst vermutete ich, dass es sich um ein Problem mit IDEA handelte, also probierte ich verschiedene Lösungen online aus. Es gibt ungefähr diese Typen:

1. Ändern Sie die Ausführungs-/Debugkonfigurationen und fügen Sie den VM-Optionsparameter hinzu: -Dfile.encoding=utf-8;

2. Ändern Sie die Ausführungs-/Debugkonfigurationen und fügen Sie Umgebungsvariablenparameter hinzu: JAVA_TOOL_OPTIONS:-Dfile.encoding=utf-8 und JAVA_OPTS:-Dfile.encoding=utf-8;

3. Ändern Sie die 3 Kodierungen der IDEA-Konfigurationsdateikodierungen in UTF-8;

4. Ändern Sie die benutzerdefinierten VM-Optionen von IDEA und fügen Sie -Dfile.encoding=utf-8 hinzu;

5. Ändern Sie die Dateien idea.exe.vmoptions und idea64.exe.vmoptions im Bin-Verzeichnis der IDEA-Installation und fügen Sie -Dfile.encoding=utf-8 hinzu;

6. Ändern Sie die Datei encodings.xml im Ordner .idea unter dem Projekt und ändern Sie sie von UTF-8 in UTF-8.

7. Ändern Sie die Konfigurationsdatei logging.properties von Tomcat und ändern Sie UTF-8 darin in GBK.

8. Löschen Sie nach der Änderung den Zielordner und kompilieren Sie neu.

9. Starten Sie IDEA nach der Änderung neu.

Nach dem Ausprobieren aller Methoden konnte das Problem des verstümmelten Konsolenprotokolls nicht gelöst werden, wie in der Abbildung gezeigt:

Nach sorgfältiger Beobachtung stellte ich fest, dass die chinesischen verstümmelten Zeichen wie „Information“ und „Serious“ auf der linken Seite des Protokolls behoben wurden, das Protokoll jedoch immer noch verstümmelte Zeichen enthält.

Ich hatte das Gefühl, dass es sich möglicherweise um ein Problem mit dem Code handelte, und beschloss daher, den Code zu debuggen, beginnend mit der ersten Zeile des Protokolls.

17. Februar 2020 10:10:08.585 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server.æœåŠ¡ Version: Apache Tomcat/@VERSION@

Suchen Sie die log()-Methode der Klasse org.apache.catalina.startup.VersionLoggerListener, setzen Sie Haltepunkte und verfolgen Sie sie Schritt für Schritt

Schließlich wurde festgestellt, dass alle Werte in der Lookup-Map-Sammlung der PropertyResourceBundle-Klasse vorhanden waren und die Daten in der Sammlung verstümmelt waren.

Verwenden Sie daher weiterhin den Debugger, um das Laden der Suche anzuzeigen, und überprüfen Sie den Quellcode, um sicherzustellen, dass die Daten in der Suche-Sammlung aus der Eigenschaftendatei gelesen werden. Überprüfen Sie, ob die Eigenschaftendatei auch UTF-8 kodiert ist. Sehen Sie sich also weiterhin den Quellcode an.

Die von geladene Eigenschaftendatei ist = classLoader.getResourceAsStream(resourceName); in ResourceBundle

Laden Sie dann die Daten über die Konstruktionsmethode PropertyResourceBundle.

Als ich diesen Code ändern wollte, stellte ich fest, dass dies eine Klasse im JDK war und nicht geändert werden konnte. (Später erfuhr ich, dass ResourceBundle zur Internationalisierung verwendet wird).

Später habe ich die Informationen überprüft und festgestellt, dass in Java das Standardformat zum Lesen von Dateien iso8859-1 ist. Wenn wir Chinesisch speichern, ist es normalerweise UTF-8. Das Ergebnis sind also verstümmelte Zeichen.

Es gibt zwei Lösungen:

1. Verwenden Sie das Tool native2ascii.exe unter JDK, um die Eigenschaftendatei in die Unicode-Kodierung zu konvertieren. Nach der Konvertierung wie unten gezeigt:

2. Nachdem Sie den Wert im Code erhalten haben, kodieren und dekodieren Sie ihn manuell neu

        versuchen {

            Wert = neuer String (Wert.getBytes("ISO-8859-1"), "UTF-8");

        }fang(Ausnahme e){

            e.printStackTrace();

        }

Nach dem Testen können beide Methoden das Problem lösen.

Da es in Tomcat zu viele Eigenschaftendateien gibt, habe ich die zweite Methode übernommen und den Tomcat-Quellcode wie folgt geändert:

1) Methode getString(finaler String-Schlüssel, finales Objekt... Argumente) in der Klasse org.apache.tomcat.util.res.StringManager.

2) getMessage(String errCode)-Methode der Klasse org.apache.jasper.compiler.Localizer

An diesem Punkt ist das verstümmelte Problem gelöst

Zusammenfassen

Dies ist das Ende dieses Artikels über einen Debugging-Prozess-Datensatz für chinesische verstümmelte Zeichen in der Startkonsole des Tomcat-Quellcodes. Weitere relevante chinesische verstümmelte Zeichen in der Startkonsole des Tomcat-Quellcodes finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • IntelliJ IDEA 2021 Tomcat 8 Start verstümmelter Code Problemlösungsschritte
  • So verbessern Sie die Startgeschwindigkeit von Idea und beheben Probleme mit verstümmelten Zeichen im Tomcat-Protokoll
  • Lösen Sie das chinesische verstümmelte Problem, wenn Java und Idea Tomcat starten
  • Lösung für die verstümmelte Ausgabe, wenn IDEA das Tomcat-Projekt startet
  • Lösen Sie das Problem verstümmelter Zeichen in der Tomcat-Konsole beim Starten von IDEA
  • So lösen Sie das Problem einer großen Anzahl verstümmelter Zeichen beim Starten von Tomcat

<<:  Verwendung von MySQL-Triggern

>>:  Designreferenz Schönes und originelles Blog-Design

Artikel empfehlen

So deinstallieren Sie MySQL sauber (getestet und effektiv)

Wie deinstalliere ich Mysql vollständig? Befolgen...

Vergleich von mydumper und mysqldump in MySQL

Wenn Sie nur ein paar Tabellen oder eine einzelne...

Natives JavaScript zum Erreichen von Skinning

Der spezifische Code zur Implementierung von Skin...

Mit CSS3 implementierte Text-Popup-Effekte

Ergebnisse erzielenImplementierungscode html <...

Das WeChat-Applet realisiert die Chatroom-Funktion

In diesem Artikel wird der spezifische Code des W...

Schritte für Docker zum Erstellen eines eigenen lokalen Image-Repositorys

1. Umgebung und Vorbereitung 1. Ubuntu 14.04 2.Do...

So beheben Sie den Startfehler des Docker-Containers

Frage: Nach dem Neustart des Computers kann der M...

Detaillierte Erklärung zur Lösung des Problems zu langer Inhalte in CSS

Wenn wir CSS schreiben, vergessen wir manchmal di...

So erstellen Sie einen SVN-Server unter Linux

1: SVN installieren yum install -y Subversion 2. ...

js-Speicherleckszenarien, wie man sie im Detail überwacht und analysiert

Inhaltsverzeichnis Vorwort Welche Situationen kön...

10 hervorragende Web-UI-Bibliotheken/Frameworks

1. IT Mill-Toolkit IT Mill Toolkit ist ein Open-S...