Maison >base de données >tutoriel mysql >Pourquoi mes caractères sont-ils remplacés par \'?\' lors de l'enregistrement des données dans mon application Web Java ?
Problème d'encodage de caractères JDBC résolu dans l'application Web Java
Dans une application Web Java déployée sur GlassFish 3 et utilisant JPA (EclipseLink) avec un Base de données MySQL, un utilisateur a rencontré des écarts d'encodage lors de l'enregistrement des données via la méthode update(). Les caractères dans les champs de chaîne ont été remplacés par « ? » symboles lors de l'insertion de la base de données.
Malgré la configuration du serveur, des pages Web et de la base de données pour utiliser UTF-8, le problème a persisté. Même si les données étaient affichées correctement sur les pages suivantes et semblaient valides lors du débogage de NetBeans, des doutes subsistaient quant à l'exactitude de la traduction du débogage.
Configuration JDBC le coupable
Retracer le cause première, il a été découvert que JDBC, plutôt que JPA, régit le codage des caractères dans ce scénario. En ajoutant le paramètre suivant à l'URL de connexion JDBC :
characterEncoding=utf8
le problème d'encodage a été résolu. L'URL de connexion modifiée garantit que le codage des caractères UTF-8 est explicitement défini pour la communication JDBC avec la base de données MySQL, résolvant ainsi le problème d'intégrité dans les champs de chaîne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!