Conflit de codage de chaines de caractère entre java et oracle

amanda1981 Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 5 mai 2004 - 26 avril 2004 à 16:42
amanda1981 Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 5 mai 2004 - 26 avril 2004 à 21:05
bonjour:
j'ai un problème avec un string que je récupère depuis une BD oracle.
alors je récupère bien le string(nommée e) de la BD et je peux même l'imprimer sur java sans problème. l'impression me donne exactement la chaine que j'ai sur la BD.
mais lorsque je fais une comparaison entre cette chaine et la valeur que je dois récupérer, la fonction de comparaison donne -8.
plus clairement sur la base j'ai
adresse_ip="172.16.1.25"
je récupère l'adresse dans e à partir d'oracle ;
quand j'imprime e ça donne:
172.16.1.25
mais lorsque je fais:
e.compareto("172.16.1.25")
ça donne -8 comme résultat
j'ai compris que oracle code ces strings différemment que oracle, alors comment puis je changer le codage de ma string e pour pouvoir la manipuler sur java?
merci bcp de m'aider.
bonne journée

5 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
26 avril 2004 à 16:54
Salut,

il n'y a pas de pb de codage car tu ne manipules que des Strings. La conversion a été effectué par le Driver JDBC.
Ton pb se situe au niveau des String. Es tu sûre qu'elles sont identiques ? pas d'espaces superflus ou autres ...
0
amanda1981 Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 5 mai 2004
26 avril 2004 à 17:15
resalut:
j'ai déjà comparer la longueur des 2 chaines, ils ont la même longueur!!!!
j'ai même décortiquer la chaine e et j'ai imprimer caractère par caractère, ça donne toujours la même chose!!!!
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
26 avril 2004 à 18:04
j'ai pas d'idée.
Bon contrairement à ce que je t'ai dit précédemment il peut y avoir un pb d'encoding (mea culpa). C'est bizarre je trouve car je ne suis jamais tombé sur un tel pb en jouant avec les bases de données. De plus je sais pas comment voir quel est l'encoding d'une String.
J'espère que qqun pourra t'aider. Désolé je déclare forfait :(
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
26 avril 2004 à 18:21
j'ai fait un test avec plusieurs String construites avec un encodage différent. La méthode compareTo m'a rendu le bon résultat. C'est normal car elle fait la comparaison sur le caractère unicode. (j'ai lu un peu trop vite la javadoc et je ne l'avais pas vu). Donc quelque soit l'encodage, ta String sera convertit en unicode et comparée à l'autre. Donc la comparaison d'une chaine encodée en UTF8 et l'autre en ISO-8859-1 sera effectué en unicode.
Dans JDK 1.4 on peut spécifier le mapping entre un encodage et l'unicode (CharSet). Je vois 2 possibilités soit tes Strings sont bizarres (?) soit elles ont un charset bizarre (?) :) . Bref normalement ton pb ne devrait pas arriver.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amanda1981 Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 5 mai 2004
26 avril 2004 à 21:05
resalut:
je ne sais pas comment m'excuser de vous avoir fait perdre une bonne partie de ton après midi, je suis vraiment désolée, mais j'ai été persuadée que le prolème était dans l'encoding que j'ai pas vraiment fait attention que j'ai fait une erreur en entrant l'ip sur la base; en fait je comparais 172.16.1.25 avec 172.1.16.25 tellement les deux chaines se ressemblent que j'ai pas du tt fait atention, il a fallu que je revienne sur oracle et de comparer depuis la source.
bête comme erreur mais elle m'a fait perdre un après midi.
je m'excuse encore.
merci pour ton aide.
bonne journée
0
Rejoignez-nous