[JDBC] problème d'encodage de caractères.

problème d'encodage de caractères. [JDBC] - Java - Programmation

Marsh Posté le 15-01-2004 à 18:35:57    

Bonjour à tous,
 
voila le contexte:
 
Je récupère dans un fichier texte pure du sql et je l'exécute.
 
voici mon problème:
 
certain caractère ne sont pas reconnu et sont remplacé par des '?' comme le symbole '?' par exemple.
 
j'ai essayé de jouer sur la définition du charset sur la connexion avec les modification de codes suivantes:

Code :
  1. Properties props = new Properties();
  2.  props.put("characterEncoding", "UTF-8" );
  3.  props.put("useUnicode", "true" );
  4.  props.put("user", "root" );
  5.  props.put("password", "" );
  6.  return DriverManager.getConnection(
  7.    "jdbc:mysql://localhost/igwane",
  8. //    "root",
  9. //    ""
  10.    props
  11.  );


mais au mieux j'obtiens 'â?¬' pour '?'
 
Une idee?

Reply

Marsh Posté le 15-01-2004 à 18:35:57   

Reply

Marsh Posté le 15-01-2004 à 18:44:40    

ça serait pas la foutue console qui t'affiche mal les caracteres?  
essaie de faire un system.out.println du meme char pour voir ;)
 
un autre truc, tu dois specifier le meme encodage que celui utilisé par ta base hein, à priori
et t'as essayé l'ISO-8859-1 ?


Message édité par the real moins moins le 15-01-2004 à 18:47:32

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-01-2004 à 19:01:07    

hum, non, malheureusement c'est pas la console, jai le problème aussi en listant en php et en jdbc en essayant de récupéré le champ pour effectuer un traitement sur la chaîne :-\
 
je teste l'ISO-8859-1 mtn, merci de ta réponse ;)
 
edit: en fait je log la chaine que j'insere et le sql insert bien un '?' mais dès l'insertion si je browse la table en console ou en web jai soit '?' soit 'â?¬'


Message édité par cthulhu le 15-01-2004 à 19:10:43
Reply

Marsh Posté le 15-01-2004 à 19:08:58    

ca donne 'â?¬' pour '?'
avec le code:
 

Code :
  1. Properties props = new Properties();
  2.  props.put("characterEncoding", "ISO-8859-1" );
  3. //  props.put("characterEncoding", "UTF-8" );
  4.  props.put("useUnicode", "true" );
  5.  props.put("user", "root" );
  6.  props.put("password", "" );


Message édité par cthulhu le 15-01-2004 à 19:12:33
Reply

Marsh Posté le 15-01-2004 à 19:09:48    

l'euro c'est pas ISO-8859-15 ?


---------------
IVG en france
Reply

Marsh Posté le 15-01-2004 à 19:10:41    

uriel a écrit :

l'euro c'est pas ISO-8859-15 ?


 
si :jap:

Reply

Marsh Posté le 15-01-2004 à 19:11:01    

oki, jessaye :D

Reply

Marsh Posté le 15-01-2004 à 19:12:15    

cthulhu a écrit :

certain caractère ne sont pas reconnu et sont remplacé par des '?' comme le symbole '?' par exemple.


C'est à dire ?
 
tu enregistres en jdbc le caractère '?' en base, puis quand tu le relis en JDBC, ca te renvois autre chose que '?' ???  :heink:  
 
Si c'est juste en faisant un select directe dans ta base que tu vois que l'affichage de ? n'est pas le bon, c'est normal : surement que l'utilitaire que tu utilises pour accéder à ta base n'utilise pas le même charset que celui que tu as utilisé avec JDBC


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-01-2004 à 19:14:09    

oups, t'as répondu entre temps je crois ... :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-01-2004 à 19:16:12    

benou a écrit :


C'est à dire ?
 
tu enregistres en jdbc le caractère '?' en base, puis quand tu le relis en JDBC, ca te renvois autre chose que '?' ???  :heink:  


 
voila si tu veux je fais un insert ... '?'
et si juste après je fais un getString il me remballe '?'
 

benou a écrit :


Si c'est juste en faisant un select directe dans ta base que tu vois que l'affichage de ? n'est pas le bon, c'est normal : surement que l'utilitaire que tu utilises pour accéder à ta base n'utilise pas le même charset que celui que tu as utilisé avec JDBC


 
oui c surement un truc du genre, mais je vois pas pourquoi en utilisant la même connexion pour l'insertion et pour la selection il merdouille dans les caractères

Reply

Marsh Posté le 15-01-2004 à 19:16:12   

Reply

Marsh Posté le 15-01-2004 à 19:17:29    

j'ai déjà eu des merdes pas possibles avec mysql a ce sujet, jcomprenais rien... et d'un serveur a l'autre avec les memes drivers ça marchait ou pas ://
 
sinon pour l'iso, je pensais avoir écrit -15 ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-01-2004 à 19:17:38    

cthulhu a écrit :


oui c surement un truc du genre, mais je vois pas pourquoi en utilisant la même connexion pour l'insertion et pour la selection il merdouille dans les caractères


 
si la base est pas encodé pareil, c'est normal, il te ressort ce qu'elle contient  [:spamafote] (tu peux lire directement ce qu'il y a dans la base?)


---------------
IVG en france
Reply

Marsh Posté le 15-01-2004 à 19:19:09    

uriel a écrit :


si la base est pas encodé pareil, c'est normal, il te ressort ce qu'elle contient  


bha nan !
si il utilise le même encodage pour écrire et lire, quelque soit l'encodage de la base ca devrait marcher ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-01-2004 à 19:21:12    

benou a écrit :


bha nan !
si il utilise le même encodage pour écrire et lire, quelque soit l'encodage de la base ca devrait marcher ...


 
si la base reçoit un caractere qu'elle connait pas, elle va le transformer en autre chose  :??:


---------------
IVG en france
Reply

Marsh Posté le 15-01-2004 à 19:22:03    

uriel a écrit :


 
si la base reçoit un caractere qu'elle connait pas, elle va le transformer en autre chose  :??:  


et alors ? elle le retransformera après à la lecture ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-01-2004 à 19:24:48    

benou a écrit :


et alors ? elle le retransformera après à la lecture ...


 
ah... ok...  :sweat:


---------------
IVG en france
Reply

Marsh Posté le 15-01-2004 à 19:25:38    

uriel a écrit :


ah... ok...  :sweat:  


enfin logiquement quoi ... mais visiblement ca marche pas  :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-01-2004 à 19:25:44    

pas si vite :D, je fais d'autres test et je vous tiens au courant ;)

Reply

Marsh Posté le 15-01-2004 à 19:34:25    

ok merci les gars,
 
ca marche en définissant l'encodage en "ISO-8859-15"
 
encore merci à tous, et pour la peine un petit '?' :D
 
a++
 

Reply

Marsh Posté le 19-01-2004 à 17:25:58    

benou a écrit :


bha nan !
si il utilise le même encodage pour écrire et lire, quelque soit l'encodage de la base ca devrait marcher ...


 
non... quand tu écris dans la base, il transforme dans son charset. si le caractère n'y est pas, il le transforme...
ensuite à la lecture, il passe bêtement ce qu'il a écrit à JDBC... en général, une base est en LATIN1, LATIN15 ou Unicode, et Java utilise Unicode... si tu écrit un caractère Unicode dans une base, il sera transformé dans un truc du genre 'é', et ensuite, Java le copie en Unicode. les deux caractères existant bien en Unicode, il récupère 'é'...
 
de toute façon j'arrive un peu tard, tant pis :D


Message édité par Predicator le 19-01-2004 à 17:26:13
Reply

Marsh Posté le 20-01-2004 à 09:15:18    

un peu tard, oui, mais c'était une précision utile, et maintenant je comprends mieux mon problème.
 
Donc, merci ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed