Müllcode ist Kopfschmerzen. In diesem Artikel wird eine Lösung für das Problem des verstümmelten Chinesen im Frühjahr MVC vorgestellt, das wie folgt lautet:
1: Die Lösung für verstümmelten Code, nachdem der Formular eingereichter Controller chinesische Parameter erhält
Hinweis: Die JSP-Seitencodierung ist auf UTF-8 gesetzt
Die Formularübermittlungsmethode muss post sein. Der Feder -Codierungsfilter unter der GET -Methode hat keinen Einfluss
<%@ page Language = "java" import = "java.util.
Ändern Sie web.xml und fügen Sie Codierungsfilter wie folgt hinzu (beachten Sie, dass Sie den ForceCoding -Parameterwert auf true festlegen müssen).
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>orgspringframeworkwebfilterCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <init-param> <Param-name> crossEcoding </param-name> <param-value> true </param-value> </init-param> </filter> <filter-mapping> <filter-name> charakteritätscodierungfilter </filter-name> <url-pufter>/*</url-patter
Hinweis: Unterstützt die Datenbankcodierung Chinesisch?
Sind die Datenbanktabellen und Tabellenfelder korrekt?
Ändern Sie die Parametereinstellungen der Konfigurationsverbindungsdatenbank:
<Eigenschaft name = "url" value = "jdbc: mysql: // localhost: 3306/dbname? useUnicode = true & charakterencodierung = utf-8"> </Eigenschaft>
Der erste Fall:
Geben Sie die JSP -Seite in Chinesisch ein und geben Sie den COURLAD -CODE COMPONER ein. Zu diesem Zeitpunkt müssen Sie festlegen, um einen codierten Filter (Filter) hinzuzufügen, um die Codierung in UTF-8 zu vereinen. Der Code ist wie folgt:
Web.xml -Konfigurationsdatei:
<Filter> <Filter-name> charakterisch-filter </filter-name> <filterklasse> orgspringframeworkwebfiltercharactercodingFilter </filter-classe> <init-param> <param-name> codieren </par AM-Name> <param-value> utf-8 </param-value> </init-param> </filter> <filtermapping> <Filter-name> charakteristischescodierungfilter </filter-name> <URL-PATTERN>/*
Es sollte hier angemerkt werden, dass es am besten ist, diesen Code zu Beginn von WebxML zu platzieren, da es eine Reihenfolge der Abfangen gibt, und wenn es hinten platziert wird, ist es einfach, ihn zu blockieren.
Der zweite Fall:
Datenbank chinesische Daten, JSP -Seite zeigt verstümmelten Code an (nicht verstümmelter Code im strengen Sinne, wird jedoch in Form eines Fragezeichens angezeigt)
Da die Dateninteraktion zwischen unserer Front und Backend JSON -Daten verwendet, weiß ich nicht viel über den Grund für diese Situation. Ich habe es noch nie zuvor begegnet. Ich kann mir nur die Schuld geben, zu wenige Projekte durchgeführt zu haben, und es ist nicht schwierig, es zu lösen. Ich muss nur das Codierungsformat festlegen, wenn ich JSON konvertiere. Der Code ist wie folgt:
ResponseSetContentType ("Anwendung/JSON; CharSet = UTF-8"); // Verhindern Sie die Datenübertragung aus verstümmelten CodeWenn Sie diesen Satz schreiben, haben Sie keine verstümmelten Codes.
Die dritte Situation:
Die Seite ist auch richtig, um sie an den Controller weiterzugeben, aber nachdem sie sie in der Datenbank gespeichert hat, ist sie verstümmelt (es ist kein strenger verstümmelter Code, genau wie die oben genannten, gibt es alle Fragenmarken)
Dieses Problem hat mich für eine Weile beunruhigt. Ich habe das Gefühl, dass das Codierungsformat der Datenbank falsch ist. Es ist immer noch nicht möglich, die Datenbank mit dem Codierungsformat von UTF-8 neu zu erstellen. Schließlich hatte ich das Gefühl, dass es ein Problem mit Jboss war. Unser Server verwendet JBoss. Ich habe das Internet durchsucht und das Codierungsformat hinzugefügt, wenn ich eine Verbindung zur Datenquelle herstellt. Der Code ist wie folgt:
<dataSource jta = "true" jndi-name = "java: jboss/dataSources/jcmysqlds" pool-name = "jcmysqlds" enabled = "true" use-Java-context = "true"> <Connection-URL> JDBC: mysql: // 46/itoo_basic_basic? useUnicode = true & charakterencoding = utf-8 </connection-URL> <dreiber> mysql </treiber> <pool> <Pref Ill> false </prefill> <use-strikt-min> false </use-strikt-min> <Flush-Strategy> failingConnectionOnly </Flush-Strategy> </pool> <Securess> <Benutzername> root </user-name> <pass <a href = "http: // wwwitnet/edu/eBg/" target = "_ leer"> word </a>> 123456 </pass <a href = "http: // wwwitnet/edu/eBg/" target = "_ blank"> wort </a>> </serity> </datasource>
1. Seite verstümmelt
Seiten sind relativ einfach zu lösen und setzen häufig relevante Zeichensätze auf der entsprechenden JSP -Seite oder HTML -Seite ein. wie
%@Page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%
2.. Value -Verschlachter Code übertragen
Während des Wertübertragungsprozesses treten häufig verstümmelte Codes häufig auf. Ganz zu schweigen davon, in welchem Szenario es sich befinden, enthalten die häufig verwendeten Lösungen die folgenden Konfigurationen angegebene Filter
<!-Konfigurieren Sie den Anforderungsfilter, legen Sie das Codierungsformat auf UTF-8 ein, vermeiden Sie chinesische verstümmelt-> <filter> <filter-name <param-value> utf-8 </param-value> </init-param> <init-param> <init-param> <param-name> crossEcoding </param-name> <param-value> true </param-value> </init-param> </filter> </filter>
Setzen Sie den Anfragezeichen fest
Oft erscheint nach dem Übergeben von der Rezeption an den entsprechenden Controller oder der Aktion, dass der verstümmelte Code angezeigt wird. Meine allgemeine Idee ist es, zuerst den Standardcharaktersatz selbst zu drucken.
SystemOutPrintln (RequestGetaracacterenCoding ());
Wenn der erforderliche Zeichensatz nicht gedruckt ist, setzen Sie den entsprechenden Zeichensatz gemäß der Situation.
requestsetcharacterencoding ("utf-8");Natürlich können einige Situationen nicht gelöst werden. Sie können Folgendes verwenden
String Str = NewString ((RequestgetParameter ("BigquestionTypeName") KETBYTES ("ISO-8859-1"), "UTF-8")3. Speichern Sie die durch Datenbank verstümmelte Code
Dies ist relativ kompliziert. Hier verwendet LZ MySQL, und MySQL wird verwendet, um vorzustellen, wie man dieses verstümmelte Problem löst
Wie wir alle wissen, ist es besser, es unten zu verwenden, ob es sich um reine JDBC, Hibernate oder JPA handelt. Tatsächlich handelt es sich im Wesentlichen um JDBC, und das entsprechende Framework wird nur auf relevanter Basis verkapselt. Egal in welcher Technologie es sich handelt, sie wird die mit der Datenbank verbundene URL verwenden. Die URL muss also zuerst überprüft werden
URL
Die Standardsituation fügt die entsprechenden Zeichensatzeinstellungen nach der entsprechenden Situation wie folgt hinzu
jdbcurl = jdbc: mysql: /// itcastoa? useUnicode = true & charakterencoding = utf-8
Wie oben erwähnt, muss UseUnicode mit dem in der Datenbank festgelegten Zeichen verbunden sein, und was ist das? Dies ist ein Problem, in XML & Fluchtcharakter von &. Wenn Sie XML verwenden, um die entsprechende Konfiguration der Datenbankverbindung zu konfigurieren, ist dies das Problem. Wenn Sie jedoch ** Eigenschaften verwenden, wird es ein Problem geben, und Sie müssen den Verstärker entfernen. Dies ist in der Tat die Erfahrung, dass LZ einen blutigen Kopf hat.
Datenbank
Das Problem hier ist auch relativ schwer zu handhaben. Melden Sie sich in der Datenbank an
Datenbank -Codierungsformat anzeigen
<img src = "http: // www2ctocom/uploadFile/callFiles/20150302/png" 7plu ninja htahle ninja: 1opentablaug: sun. 1 Tag SQL> "=" ">
Sie können sehen, ob der Zeichensatz von Server lateinisch ist1. Hier müssen wir über die häufig verwendeten Zeichensets sprechen.
Für den Frieden und den Wohlstand der Welt hat die ISO -Organisation eine Unicode -Charakter -Lösung bezeichnet. Die Unicode-Codierung ist eine Brücke der gegenseitigen Kommunikation und der Umwandlung zwischen verschiedenen Codierungen, einschließlich 32-Bit-Binärdatoren, sodass sie Charaktere für die Kraft von 2 aufnehmen können, was für das Leben ausreicht. Unicode ist nach unterschiedlichen Bedürfnissen in drei Lösungen unterteilt.
UTF8: Wird verwendet, um die Codierung zu lösen, die in verschiedenen Sprachen international erscheint. Für Englisch werden 8 Ziffern verwendet, und für Chinesisch werden 3 Ziffern verwendet. Es kann auf jedem Browser angezeigt werden, der den UTF9 -Zeichen ohne weitere Verarbeitung unterstützt.
Die anderen beiden sind UTF16 und 32, die hier nicht bearbeitet werden. Sie können es selbst überprüfen, aber es liegt immer noch an der Bequemlichkeit des Speichers und der Verwendung, um zu entscheiden, welche Sie verwenden sollen.
Okay, derjenige, der relativ vertraut ist, ist GBK, der allgemein als National Standard Code bekannt ist, der nach chinesischen nationalen Standards formuliert ist und nur chinesische Charaktere enthält. Im Vergleich zu den beiden ist UTF8 eine bessere Kompatibilität, hat jedoch eine größere Speicherkapazität.
Kommen Sie bald zurück, wenn Sie das Zeichensatz aufladen oder zuerst zurückkehren und das Problem lösen. Es ist also in Ordnung, GBK oder UTF8 hier zu verwenden. Aber Latin1 ist definitiv nicht möglich, hier wird es hauptsächlich von einem solchen Befehl festgelegt
Die Teile Server, Datenbank und Datentabelle werden separat festgelegt und die Verbindungscodierung muss festgelegt werden. Die Verbindungscodierungseinstellungen sind wie folgt:
MySQL> Setzen Sie Zeichen_Set_Client = 'GBK'; MySQL> Setzen Sie Zeichen_Set_Connection = 'GBK'MYSQL> Setzen Sie Zeichen_Set_Results =' GBK ''
Richten Sie die Codierung ein und Sie können Chinese unten erfolgreich einfügen. Tatsächlich kann es in einem Satz gelöst werden.
Häufig verwendete Befehle
Datenbank -Codierungsformat anzeigen
Variablen wie 'charakter_set_%' anzeigen;
Sehen Sie sich die Erstellung von Tabellen in der Datenbank an
Zeigen Sie Table TableName erstellen;
Setzen Sie das Datenbank -Codierungsformat
setNames 'gbk';
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.