À condition que vous utilisiez bien Facelets (qui utilise UTF-8 par défaut) et que vous n'utilisiez pas PrimeFaces ajax (qui est connu pour perturber l'encodage du corps de la requête ), votre problème a 2 causes :
-
Le codage des caractères du pilote MySQL JDBC n'a pas été défini sur UTF-8. Cela provoquait des caractères brouillés dans la base de données.
-
Le codage des caractères de la console Eclipse n'a pas été défini sur UTF-8. Cela provoquait des caractères brouillés dans
System.out
.
Les solutions sont :
-
Ajouter
useUnicode=yes
etcharacterEncoding=UTF-8
paramètres à la connexion JDBC. Vous pouvez le spécifier soit comme chaîne de requête dans l'URL JDBCjdbc:mysql://hostname:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
ou en tant que propriétés de connexion dans la source de données JDBC, exactement de la même manière que vous avez spécifié le nom d'utilisateur, le mot de passe, etc.
-
Dites à Eclipse d'utiliser UTF-8 comme encodage de console par Window> Preferences> General> Workspace> Text File Encoding :