J'ai une application Web qui recueille des données de l'utilisateur et les enregistre dans une base de données mysql. Le problème est que pour une chaîne comme "Ajánlat kiküldése", ce qui est stocké dans la base de données est "Ajállat kiküldée".struts, hibernate, problème d'encodage mysql-char
Pour ma base de données, j'ai DEFAULT CHARACTER SET utf8. Pour mes tables j'ai DEFAULT CHARSET = utf8.
Dans mon hibernate.cfg.xml j'ai:
<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<property name="hibernate.connection.charSet">UTF-8</property>
Si j'entre "ajánlat kiküldése" directement dans la base de données en utilisant un client MySQL, le texte est stocké correctement. Ainsi, quelque part au long de ma demande, le texte est modifié.
J'ai dans ma page JSPX:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
Pour ma forme, j'utiliser sutrts html taglib et le code est très simple:
<html:form action="/submitAddProject">
<table>
<tr>
<td>name</td>
<td>
<html:text property="projectNameToAdd"/>
<td>
etc.
Sur soumettre, quand je fais myForm.getProjectNameToAdd , J'ai un texte différent de celui que j'entre dans le formulaire. (Ajánlat kiküldà © au lieu de se ajánlat kiküldése)
Encore une chose: quand je rentre le texte manuellement dans la base de données, il s'affiche correctement dans mon application. Le problème apparaît uniquement lors de l'enregistrement du texte. – Mihaela
Et avant de faire la sauvegarde sur la base de données, quand j'appelle un getter sur mon champ String qui pose problème, je reçois déjà le texte dans le mauvais encodage. Il semble donc que le problème ne se pose pas lorsque j'essaie d'enregistrer sur db, mais lorsque les champs de mon objet formulaire sont remplis depuis la page html, plus exactement, la chaîne reçue par le stter est déjà tordue et différente de la chaîne saisie dans le champ de texte. – Mihaela
utilisez-vous une connexion framewrok de connexion? – fmucar