2016-03-21 6 views
0

Ich hatte eine Anforderung vom Client, um das Speichern von UTF-8-Daten von Benutzern (Chinesisch, Japanisch usw.) in unserer Anwendungsdatenbank zu unterstützen und sie so anzuzeigen, wie sie ist. Dazu habe ich meinen DB-Zeichensatz geändert und meine JDBC-Verbindungszeichenfolge aktualisiert, um die UTF-8-Datenverarbeitung zu unterstützen. Nach dieser Einrichtung war es mir möglich, chinesische Sprache in meiner Datenbank zu speichern und sie in meiner Anwendungsoberfläche so anzuzeigen, wie sie ist.Problem mit UTF-8-Datenanforderung auf Produktion

Aber auf meinem Produktionsserver bekomme ich Probleme damit. Ich untersuchte dies auf Produktionssystem und fand heraus, dass die Zeichen, die ich in meiner Produktionsanwendung UI eingeben, sagen zum Beispiel "你 叫 什么 名字" wurde in umgewandelt "æ? ¨å¤? à ®ã? ³ã? ³ã ? μã? ¼ã ?? ã ¯æ ?? é? ã §ã? ã? ã ?? " als meine Produktionsanwendung die Anfrage erhalten hat. Obwohl, wenn ich die gleiche Sache auf meinem lokalen Maschine laufe, empfange ich die Buchstaben, wie es ist, dh wenn ich "你 叫 什么 名字" in ui gebe, bekomme ich "你 叫 什么 名字" in den Anforderungsdaten außerdem auf meinem Heimsystem.

Die Anwendung in meiner Produktion 7.

eingesetzt wird, ist Windows 7, tomcat auf tomcat7 und CentOS OS, während meiner lokalen Maschine (Entwicklungsumgebung)

dies durch ein Problem verursacht wird, in tomcat Konfiguration? Oder ist es einig Einstellung in OS?

Bitte schlagen Sie vor, was könnte daran falsch sein?

+2

Haben Sie die Einstellung URIEncoding für Tomcat7 in server.xml überprüft? Es sollte auf UTF-8 eingestellt sein. –

+0

Sie scheinen tatsächlich ein Codierungsproblem zu haben. Sie müssen immer daran denken, dass jede Zeichenfolge eine * Interpretation * einer zugrunde liegenden Bytefolge gemäß einem bestimmten Codierungsschema ist. Es gab viele solcher Codierungsschemata, und es gibt immer noch einige, die gemeinsam verwendet werden. Wenn eine Komponente oder Maschine in einer Verarbeitungskette eine Byte-Sequenz entsprechend einer anderen Codierung interpretiert als die vorherige, die zum Verschlüsseln verwendet wurde, kann es zu einem Abfall kommen. Aber vielleicht nicht: Einige Zeichen, besonders die ersten 128 von Unicode, werden von vielen Kodierungen auf die gleiche Weise kodiert. –

+0

@JoshuaMoore: Ihr Vorschlag arbeitete wie ein Charme :). Schließlich ist das Problem gelöst und ich bekomme die Zeicheneingabe wie erwartet in UTF-8. Danke vielmals. – Raghav

Antwort

0

Vergewissern Sie sich, dass server.xml für Tomcat7 URIEncoding auf UTF-8 eingestellt ist. Das sollte das Problem beheben.

Verwandte Themen