Forudsat at du faktisk bruger Facelets (som bruger UTF-8 som standard) og ikke bruger PrimeFaces ajax (som er kendt for at ødelægge anmodningens kropskodning ), har dit problem 2 årsager:
-
MySQL JDBC-driverens tegnkodning er ikke indstillet til UTF-8. Dette forårsagede forvanskede tegn i databasen.
-
Eclipse-konsollens tegnkodning er ikke indstillet til UTF-8. Dette forårsagede forvanskede tegn i
System.out
.
Løsningerne er:
-
Tilføj
useUnicode=yes
ogcharacterEncoding=UTF-8
parametre til JDBC-forbindelsen. Du kan angive den enten som forespørgselsstreng i JDBC URL'enjdbc:mysql://hostname:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
eller som forbindelsesegenskaber i JDBC-datakilden, præcis på samme måde som du angav brugernavn, adgangskode osv.
-
Bed Eclipse om at bruge UTF-8 som konsolkodning ved Window> Preferences> General> Workspace> Text File Encoding :