2009-08-07 7 views
1

J'ai un projet dans lequel je récupère des données d'un fichier HTML, les place dans une base de données MySQL, puis les relire et les afficher à l'utilisateur. Chaque fois que le servlet insère quelque chose dans le DB, le signe "£" est inséré en tant que et lorsqu'il est à nouveau lu comme tel.Débogage d'une erreur de jeu de caractères MySQL

L'application est écrite en Java (avec Spring) et JPA avec EclipseLink en tant qu'implémentation JPA.

J'ai réduit le problème à l'insertion dans MySQL car lorsque je vois la table dans la console, le point d'interrogation apparaît.

J'ai configuré MySQL pour utiliser UTF-8 comme encodage standard dans my.cnf

[mysqld] 
default-character-set=utf8 

Si je lance

SHOW TABLE STATUS; 

Je vois que la collecte sur les tables est

utf8_general_ci 

ce qui suggère que le jeu de caractères est également UTF-8.

Il y a aussi ceci: mysql> SHOW CREATE DATABASE gate;

+----------+---------------------------------------------------------------+ 
| Database | Create Database            | 
+----------+---------------------------------------------------------------+ 
| gate  | CREATE DATABASE `gate` /*!40100 DEFAULT CHARACTER SET utf8 */ | 
+----------+---------------------------------------------------------------+ 
1 row in set (0.00 sec) 

Ainsi, avec Java étant entièrement unicode (?) Et mon DB étant réglé sur UTF-8 où pourrais-je trouver les erreurs de configuration/erreurs?

Répondre

0

Avez-vous:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

dans votre page HTML?

0

Vous devez également indiquer votre pilote mysql utiliser UTF8

db.url=jdbc:mysql://HOST:3306/DB?characterEncoding=utf8 
Questions connexes