Finden Sie das ProblemHeute 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.
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 ZusammenfassenDies 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:
|
<<: Verwendung von MySQL-Triggern
>>: Designreferenz Schönes und originelles Blog-Design
Inhaltsverzeichnis Vom Vater zum Sohn: Sohn zum V...
Bei der Arbeit an einem Projekt bin ich kürzlich ...
Inhaltsverzeichnis 1. Bedingungen für das Versage...
mysql.lap Allgemeine Parameterbeschreibung –auto-...
Was ist die CN2-Linie? CN2 steht für China Teleco...
Swap deaktivieren Wenn auf dem Server ein Datenba...
Inhaltsverzeichnis Einführung in Docker Installat...
Code-Implementierung: Code kopieren Der Code laut...
Keine Lücken auf beiden Seiten, Lücken zwischen j...
Wählen Sie bei der Installation der CentOS7-Versi...
Inhaltsverzeichnis Hintergrund 1) Aktivieren Sie ...
Docker Compose kann die Orchestrierung von Docker...
Finden Sie das Problem Heute werde ich den Tomcat...
In diesem Artikel wird der spezifische Code von J...
1. Vorhandene Module anzeigen /usr/local/nginx/sb...