Ich arbeite an einer Spring MVC + Hibernate-Anwendung, verwende MySQL (Ver. 5.0.51a) mit dem InnoDB-Motor.
Das Problem tritt auf, wenn ich ein Formular mit kyrillischen Zeichen sende. Als Ergebnis enthält die Datenbank sinnlose Zeichen in unbekannter Codierung.
Alle JSP-Seiten, die Datenbank (+ Tabellen und Felder) wurden unter Verwendung von UTF-8 erstellt. Die Hibernate-Konfiguration enthält auch eine Eigenschaft, die die Codierung auf UTF-8 setzt.
Ich habe das gelöst, indem ich einen Filter erstellt habe, der den Anforderungsinhalt mit UTF-8 codiert. Beispielcode:
…
encoding = "UTF-8";
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
…
Aber das verlangsamt die App sichtbar.
Das Interessante ist, dass das Ausführen einer Insert-Abfrage direkt aus der App (d.h. Ausführen aus Eclipse als Java-Anwendung) perfekt funktioniert.
UPD.
Soweit ich verstanden habe, ist die Verwendung eines Filters die einzige Lösung in meinem Fall.
Ich kannte den Standard-CharacterEncodingFilter nicht. Verwende ihn jetzt, funktioniert sehr gut!
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
CharacterEncodingFilter
*