2009-10-07 5 views
-1

Ma question serait quel est le problème avec le code suivant? J'essaye avec j2ee de lire unicode à partir d'une base de données et certains caractères sont retournés comme le fameux point d'interrogation.Problème Java Unicode

essayez { Classe.forName ("com.mysql.jdbc.Driver"); Chaîne connectionUrl = "jdbc: mysql: // localhost/hortimart?" + "user = webservices & password = stipjeservers"; Connexion con = DriverManager.getConnection (connectionUrl); Maintenant, j'ai aussi essayé ce code avec j2Se et ça marche. Alors est-ce j2EE ou j'ai raté quelque chose dans mon code?

Merci

+0

Je m'appelle NetBeans avec un serveur Tomcat6.0 intégré. Pour ma DB j'utilise EasyPHP 3.0. peut-être cela aide –

Répondre

0

essayer d'ajouter CharacterEncoding = utf-8 à votre URL de connexion. -à-dire:

String connectionUrl = "jdbc:mysql://localhost/hortimart?" + "user=webservices&password=stipjeservers&characterEncoding=utf-8 
+0

malheureusement le résultat est le même –

0

-vous savez si les chaînes ont été codées en UTF-8 (Unicode englobe de nombreux codages, UTF-8 étant seulement un d'entre eux). Avez-vous essayé d'utiliser un simple rs.getString(1)?

+0

oui j'ai essayé et il obtient les points d'interrogation. –

0

Il se peut que i) vous ayez des données dans la base de données qui ne sont pas unicode (comment sont définies vos tables?) Ou ii) que votre pilote n'est pas compatible Unicode.

EDIT: Avez-vous essayé de définir à la fois useUnicode et characterEncoding dans votre chaîne de connexion?

...useUnicode=true&characterEncoding=utf8 
+0

le type des champs est varchar et le classement est mis à utf8_unicode_ci (unicode multilingue, insensible à la casse) –

+0

useUnicode = true & characterEncoding = utf8 cela ne fonctionne pas non plus –

2

Il est plus probable que votre console qui est mal configuré. Avez-vous examiné les octets du résultat pour voir si c'est UTF-8?

+0

je ne reçois pas UTF-8. tout ce que je reçois sont des nombres comme ceci -72 -48 -67 -48 -77 -48 qui semblent être corrects puisque j'obtiens les mêmes nombres en j2me qu'en j2se et en j2se les caractères sont affichés correctement –

+1

Si ce sont les mêmes nombres à deux endroits, et ces chiffres s'affichent comme prévu à un endroit, alors c'est ** l'affichage ** qui est cassé, comme je l'ai suggéré, et non l'encodage. UTF-8 ** est ** une série de "nombres", qui doivent être décodés et interprétés comme des points de code Unicode à afficher comme des glyphes lisibles par l'homme. –

+0

J'utilise NetBeans et la seule différence entre ces deux endroits est la suivante: dans un projet java simple cela fonctionne (j2se) mais dans un projet web ce n'est pas le cas (j2ee). –