Vorausgesetzt, Sie verwenden tatsächlich Facelets (das standardmäßig UTF-8 verwendet) und nicht PrimeFaces Ajax (die dafür bekannt ist, dass sie die Codierung des Anfragetexts durcheinanderbringt ), hat Ihr Problem 2 Ursachen:
-
Die Zeichencodierung des MySQL-JDBC-Treibers ist nicht auf UTF-8 eingestellt. Dies führte zu verstümmelten Zeichen in der DB.
-
Die Zeichenkodierung der Eclipse-Konsole ist nicht auf UTF-8 eingestellt. Dies führte zu verstümmelten Zeichen in
System.out
.
Die Lösungen sind:
-
Fügen Sie
angebenuseUnicode=yes
hinzu undcharacterEncoding=UTF-8
Parameter an die JDBC-Verbindung. Sie können es entweder als Abfragezeichenfolge in der JDBC-URLjdbc:mysql://hostname:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
oder als Verbindungseigenschaften in der JDBC-Datenquelle, genauso wie Sie Benutzername, Passwort usw. angegeben haben.
-
Weisen Sie Eclipse an, UTF-8 als Konsolencodierung zu verwenden, indem Sie Window> Preferences> General> Workspace> Text File Encoding verwenden :