JSP muss zweimal „codiert“ werden. In der ersten Stufe wird pageEncoding verwendet, in der zweiten Stufe wird utf-8 bis utf-8 verwendet, und in der dritten Stufe wird die von Tomcat mithilfe von contentType erstellte Webseite verwendet.
Bezüglich des Unterschieds zwischen pageEncoding- und contentType-Attributen in JSP-Seiten:
pageEncoding ist die Codierung der JSP-Datei selbst
Der Zeichensatz von contentType bezieht sich auf die Inhaltskodierung, wenn der Server ihn an den Client sendet.
JSP muss zweimal „codiert“ werden. In der ersten Stufe wird pageEncoding verwendet, in der zweiten Stufe wird utf-8 bis utf-8 verwendet, und in der dritten Stufe wird die von Tomcat mithilfe von contentType erstellte Webseite verwendet.
Der erste Schritt besteht darin, JSP gemäß der Einstellung von pageEncoding zu kompilieren. Das Ergebnis ist, dass das angegebene Codierungsschema in einen einheitlichen UTF-8-JAVA-Quellcode (d. h. .java) übersetzt wird Die Einstellung ist falsch, oder es gibt keine Einstellung, und das Ergebnis sind verstümmelte chinesische Zeichen.
Die zweite Stufe ist die Kompilierung des JAVAC-Quellcodes in Java-ByteCode. Unabhängig davon, welches Codierungsschema beim Schreiben von JSP verwendet wird, handelt es sich bei den Ergebnissen dieser Stufe ausschließlich um UTF-8-codierte Java-Quellcodes.
JAVAC verwendet UTF-8-Kodierung, um Java-Quellcode zu lesen und ihn in UTF-8-kodierten Binärcode (d. h. .class) zu kompilieren. Dies ist die JVM-Spezifikation für den Ausdruck konstanter Zeichenfolgen im Binärcode (Java-Kodierung).
Die dritte Stufe besteht darin, dass Tomcat (oder sein Anwendungscontainer) den JAVA-Binärcode aus Stufe zwei lädt und ausführt. Das Ausgabeergebnis ist das, was auf dem Client angezeigt wird. Zu diesem Zeitpunkt ist der Parameter contentType in den Stufen eins und zwei ausgeblendet
contentType-Einstellung.
Die Standardeinstellungen für pageEncoding und contentType sind beide ISO8859-1. Wenn Sie eine davon zufällig festlegen, ist die andere dieselbe (dies ist bei TOMCAT4.1.27 der Fall. Dies ist jedoch nicht absolut, es hängt von der Verarbeitungsmethode ab). Jeder JSPC. pageEncoding ist nicht gleich contentType, was der Entwicklung und Anzeige von CJKV-Text-JSP-Webseiten in Asien förderlicher ist (zum Beispiel ist pageEncoding=GB2312 nicht gleich contentType=utf-8).
Die JSP-Datei ist nicht wie .java. Wenn .java vom Compiler gelesen wird, wird standardmäßig die Codierung verwendet, die dem vom Betriebssystem festgelegten Gebietsschema entspricht. Unabhängig davon, ob wir Code in Notepad oder in UE schreiben, wird im Allgemeinen der Inhalt im lokalen Codierungsformat geschrieben, wenn keine spezielle Transcodierung erfolgt. Daher kann die vom Compiler verwendete Methode es der virtuellen Maschine lediglich ermöglichen, die richtigen Daten zu erhalten.
Bei JSP-Dateien ist dies jedoch nicht der Fall. Es gibt diesen Standard-Transkodierungsprozess, aber eine korrekte Transkodierung kann durch Angabe von pageEncoding erreicht werden.
Zum Beispiel:
<%@ page contentType="text/html;charset=utf-8" %>
Die meisten von ihnen geben verstümmelte Zeichen aus, da das von mir eingegebene „Wie geht es dir“ von gbk stammt, aber es ist nicht bekannt, ob der Server „Wie geht es dir“ korrekt erfasst hat.
Ändern Sie es einfach in den folgenden Inhalt
<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>