Der folgende Editor bietet Ihnen eine Zusammenfassung der Lösungen für die verstümmelten Probleme im Front- und Backend in JavaWEB. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor, um einen Blick darauf zu werfen.
Mehrere gängige Kodierungsformate und ihre Bedeutung in JAVA:
ASCII Code
Jeder, der sich mit Computern beschäftigt hat, kennt ASCII-Codes. Es gibt insgesamt 128. Sie werden durch die unteren 7 Bits eines Bytes dargestellt , Wagenrücklauf, Löschen usw. ;32~126 sind Druckzeichen, die über die Tastatur eingegeben und angezeigt werden können.
ISO-8859-1
128 Zeichen reichen offensichtlich nicht aus, daher hat die ISO-Organisation einige weitere auf der Grundlage von ASCII-Codes formuliert Zur Erweiterung der ASCII-Kodierung werden Standards verwendet. Dies sind ISO-8859-1 bis ISO-8859-15, wobei ISO-8859-1 die meisten westeuropäischen Sprachzeichen abdeckt und am weitesten verbreitet ist. Bei ISO-8859-1 handelt es sich weiterhin um eine Einzelbyte-Kodierung, die insgesamt 256 Zeichen darstellen kann.
GB2312
Der vollständige Name lautet „Basic Set of Chinese Character Coded Character Set for Information Exchange“ und ist eine Doppelbezeichnung -Byte-Codierung, der gesamte Codierungsbereich ist A1-F7, wobei A1-A9 der Symbolbereich ist, der insgesamt 682 Symbole enthält, und B0-F7 der chinesische Zeichenbereich ist, der 6763 chinesische Zeichen enthält.
GBK
Der vollständige Name lautet „Chinese Character Internal Code Extension Specification“, ein neuer, vom Staat formulierter Standard Bureau of Technical Supervision für die interne Code-Spezifikation von Windows95 scheint GB2312 zu erweitern und weitere chinesische Zeichen hinzuzufügen. Es gibt insgesamt 23940 Codebits Die Codierung ist mit GB2312 kompatibel, das heißt, mit GB2312 codierte chinesische Zeichen können mit GBK decodiert werden, und es treten keine verstümmelten Zeichen auf.
GB18030
Der vollständige Name lautet „Chinese Coded Character Set for Information Exchange“, was in meinem Land ein verbindlicher Standard ist Es kann sich um eine Einzelbyte-, Doppelbyte- oder Vierbyte-Kodierung handeln. Die Kodierung ist mit der GB2312-Kodierung kompatibel, wird jedoch in tatsächlichen Anwendungssystemen nicht häufig verwendet.
UTF-16
Apropos UTF, wir müssen Unicode (Universal Code) erwähnen, ISO versucht, einen A zu erstellen brandneues hyperlinguistisches Wörterbuch, alle Sprachen der Welt können mit diesem Wörterbuch ineinander übersetzt werden. Sie können sich vorstellen, wie komplex dieses Wörterbuch ist. Detaillierte Spezifikationen von Unicode finden Sie in den entsprechenden Dokumenten. Unicode ist die Basis von Java und XML. Im Folgenden finden Sie eine detaillierte Einführung in die Speicherform von Unicode im Computer.
UTF-16 definiert speziell, wie auf Unicode-Zeichen in Computern zugegriffen wird. UTF-16 verwendet zwei Bytes zur Darstellung des Unicode-Konvertierungsformats. Unabhängig vom Zeichen kann es durch zwei Bytes dargestellt werden, daher wird es UTF-16 genannt. UTF-16 ist sehr praktisch für die Darstellung von Zeichen. Dies vereinfacht die Operation beim Betreiben von Zeichenfolgen erheblich. Dies ist auch ein sehr wichtiger Grund, warum Java UTF-16 als Zeichenspeicherformat verwendet.
UTF-8
UTF-16 verwendet einheitlich zwei Bytes zur Darstellung eines Zeichens, obwohl es sehr einfach und praktisch ist Darstellung, aber es hat auch seine Nachteile. Eine große Anzahl von Zeichen, die durch ein Byte dargestellt werden können, verdoppelt den Speicherplatz. In der heutigen Netzwerkbandbreite wird dies die Größe erhöhen Netzwerkübertragungsverkehr, und es ist nicht notwendig. UTF-8 verwendet eine Technologie mit variabler Länge und jeder Codierungsbereich hat eine andere Zeichenlänge. Verschiedene Zeichentypen können aus 1 bis 6 Bytes bestehen.
UTF-8-Kodierungsregeln:
1 Wenn ein Byte, ist das höchste Bit (das 8. Bit) 0. Zeigt an, dass es sich um ein ASCII-Zeichen handelt (00 – 7F). Es ist ersichtlich, dass alle ASCII-Kodierungen bereits UTF-8 sind.
2. Wenn ein Byte mit 11 beginnt, gibt die Anzahl der aufeinanderfolgenden Einsen die Anzahl der Bytes dieses Zeichens an, zum Beispiel: 110xxxxx bedeutet, dass es das erste Byte eines Doppelbyte-UTF-8-Zeichens ist.
3. Wenn ein Byte mit 10 beginnt, bedeutet dies, dass es nicht das erste Byte ist und Sie darauf warten müssen, das erste Byte des aktuellen Zeichens zu erhalten
Vergleich verschiedener Kodierungsformate
Es kann die folgenden vier Codierungsformate für chinesische Zeichen verarbeiten. Die Codierungsregeln von GB2312 und GBK sind ähnlich, aber GBK hat einen größeren Bereich und kann alle chinesischen Zeichen verarbeiten. Daher sollte beim Vergleich von GB2312 und GBK GBK ausgewählt werden . UTF-16 und UTF-8 befassen sich beide mit der Unicode-Codierung, und ihre Codierungsregeln sind nicht dieselben. Relativ gesehen ist die UTF-16-Codierung am effizientesten, es ist einfacher, Zeichen in Bytes umzuwandeln, und es ist besser, Zeichenfolgen auszuführen Operationen. Es eignet sich für die Verwendung zwischen lokaler Festplatte und Speicher und kann schnell zwischen Zeichen und Bytes wechseln. Beispielsweise verwendet die Speichercodierung von Java die UTF-16-Codierung. Es ist jedoch nicht für die Übertragung zwischen Netzwerken geeignet, da die Netzwerkübertragung den Bytestrom leicht beschädigen kann. Sobald der Bytestrom beschädigt ist, ist die Wiederherstellung schwieriger. Im Vergleich dazu ist UTF-8 besser für die Netzwerkübertragung geeignet und verwendet Single -Byte-Speicherung für ASCII-Zeichen. Darüber hinaus hat die Beschädigung eines einzelnen Zeichens keine Auswirkungen auf andere nachfolgende Zeichen. Die Codierungseffizienz liegt zwischen GBK und UTF-16. Daher ist UTF-8 eine ideale chinesische Codierung Verfahren.
Chinesische verstümmelte Lösung:
1. Die integrierte Kodierung von Tomcat ist im ISO-8859-1-Format. Ist es nicht kompatibel mit der chinesischen Kodierung? Verwenden Sie zum Empfangen dasselbe Format (ISO-8859-1) und verwenden Sie dann zum Konvertieren eine analysierbare Codierung (utf-8). Nach der Bearbeitung wird es an die Rezeption geschickt. Beim Senden an die Rezeption müssen Sie Folgendes festlegen:
res.setContentType("text/html;charset=utf-8");// Legen Sie die Zeichenkodierung der Seite fest, um das Problem der Verstümmelung zu lösen Auf der Schnittstelle angezeigte chinesische Zeichen;
2.req.setCharacterEncoding("utf-8");//Muss an erster Stelle geschrieben werden, da Daten auf diese Weise gelesen werden, andernfalls die Daten wird falsch sein.
3.Spring bietet einen CharacterEncodingFilter-Filter, mit dem das Problem verstümmelter Zeichen gelöst werden kann.
Bei der Verwendung von CharacterEncodingFilter müssen Sie auf die folgenden Punkte achten:
Die Formulardaten werden im POST-Modus übermittelt
Konfigurieren Sie den CharacterEncodingFilter-Filter in web.xml
Seitenkodierung Konsistent sein mit der vom Filter angegebenen Kodierung
CharacterEncodingFilter-Konfigurationsbeispiel:
<filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param=name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Das Obige ist: Wenn Sie beim Schreiben von Code auf Probleme stoßen, suchen Sie nach Informationen und fassen zusammen, was Sie schreiben, und es sollte Lösungen geben.
Das obige ist der detaillierte Inhalt vonLösung des Problems verstümmelter Zeichen vorne und hinten in JavaWEB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!