Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Oracle] Pb de charset

18 réponses
Avatar
Stephane Dupille
Hello,

J'ai un petit soucis avec une base Oracle 10.2. La base en question
a été déclarée avec un charset WE8ISO8859P15 (donc en iso-latin-9 ou
iso-8859-15 ?).

Quand on insère un enregistrement dans une table, les caractères
euros sont transformés en point d'interrogation inversé, que cette
insertion se fasse via une appli java ou par toad.

Une idée de ce qui pourrait clocher ?

10 réponses

1 2
Avatar
Thierry Thomas
Lundi 26 mars 2007 à 08:50 GMT, Stephane Dupille a écrit :

J'ai un petit soucis avec une base Oracle 10.2. La base en question
a été déclarée avec un charset WE8ISO8859P15 (donc en iso-latin-9 ou
iso-8859-15 ?).

Quand on insère un enregistrement dans une table, les caractères
euros sont transformés en point d'interrogation inversé, que cette
insertion se fasse via une appli java ou par toad.



Quel est l'encodage déclaré dans les sessions clientes ? (à l'insert et
à la lecture)
--
Th. Thomas.
Avatar
Stephane Dupille
Thierry Thomas écrit :
Quand on insère un enregistrement dans une table, les caractères
euros sont transformés en point d'interrogation inversé, que cette
insertion se fasse via une appli java ou par toad.


Quel est l'encodage déclaré dans les sessions clientes ? (à l'insert et
à la lecture)



Bonne question. Je suis une truffe en Oracle, comment on fait pour
vérifier, ou pour fixer ça ?
Avatar
Stephane Dupille
Thierry Thomas écrit :
Quand on insère un enregistrement dans une table, les caractères
euros sont transformés en point d'interrogation inversé, que cette
insertion se fasse via une appli java ou par toad.


Quel est l'encodage déclaré dans les sessions clientes ? (à l'insert et
à la lecture)



Je viens de vérifier, le client est un client Java ODBC thin. Il
n'est pas censé faire de conversion de charset. Il y a un truc que je
ne pige pas.

Comment on fait pour déclarer au client JDBC thin d'Oracle le
charset qu'on souhaite manipuler ?


Je fais un xpost vers fclj. Rappel pour les nouveaux : j'ai une base
Oracle, et il me transforme les euros en point d'interrogation
inversé. Le charset de la base est bon. Mais il fait une conversion
quelque part, je ne sais pas où.
Avatar
Thierry Thomas
Mardi 27 mars 2007 à 10:36 GMT, Stephane Dupille a écrit :
Je viens de vérifier, le client est un client Java ODBC thin. Il
n'est pas censé faire de conversion de charset. Il y a un truc que je
ne pige pas.

Comment on fait pour déclarer au client JDBC thin d'Oracle le
charset qu'on souhaite manipuler ?



Habituellement on peut régler ça avec un alter session, mais via ce type
de client je ne sais pas si c'est possible...

Voir tout de même la FAQ
<http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm>
pour voir ce qui peut s'appliquer.
--
Th. Thomas.
Avatar
Stephane Dupille
Thierry Thomas écrit :
Comment on fait pour déclarer au client JDBC thin d'Oracle le
charset qu'on souhaite manipuler ?


Habituellement on peut régler ça avec un alter session, mais via ce type
de client je ne sais pas si c'est possible...



J'ai essayé, on peut bien entendu faire un « alter session », qui
est une commande SQL comme une autre, mais on ne peut pas régler le
charset par cette méthode : le charset n'est pas défini dans la
session, c'est au client de gérer ce problème, pas au serveur.

Voir tout de même la FAQ
<http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm>
pour voir ce qui peut s'appliquer.



Malheureusement, le client thin JDBC ne comprends pas la variable
d'env NLS_LANG.

J'ai trouvé ça :
http://fadace.developpez.com/oracle/nls/

Ça indique qu'il existe un nls_charset.jar qui sert à faire les
conversions. Comment marche ce truc ?
Avatar
William Marie
"Stephane Dupille" a écrit dans le message de
news:

Je fais un xpost vers fclj. Rappel pour les nouveaux : j'ai une base
Oracle, et il me transforme les euros en point d'interrogation
inversé. Le charset de la base est bon. Mais il fait une conversion
quelque part, je ne sais pas où.



Il est vrai que c'est vicelard. J'ai recherché dans toutes les tables de
caractères possibles. Si le symbole ¤ (euro) peut se trouver confondu (à la
même place) avec ? (petit symbole - qui représente quoi ? Athon ? - obtenu
par Alt-Gr sur la touche $) il ne l'est jamais avec ¿ (point d'interrogation
inversé). Il y a effectivement une conversion biscornouille quelque part. Je
sèche et vous laisse danser la java pour invoquer l'Oracle.
--
=================================== William Marie
Attention antiSpam remplacer trapellun.invalid
par free.fr
Web : http://wmarie.free.fr
http://www.pandemonium.dnsalias.org (site expérimental)
====================================
Avatar
Stephane Dupille
"William Marie" écrit :
Il est vrai que c'est vicelard. J'ai recherché dans toutes les
tables de caractères possibles. Si le symbole ¤ (euro) peut se
trouver confondu (à la même place) avec ? (petit symbole - qui
représente quoi ? Athon ? - obtenu par Alt-Gr sur la touche $)



C'est le symbole currency, pour désigner une monnaie sans symbole
particulier. Et effectivement, les deux peuvent être confondus, car
les deux codes ont le même numéro dans iso-8859-1 et iso-8859-15.

il ne l'est jamais avec ¿ (point d'interrogation inversé). Il y a
effectivement une conversion biscornouille quelque part. Je sèche et
vous laisse danser la java pour invoquer l'Oracle.



Ouin !
Avatar
Gabriel
"William Marie" a écrit dans le message de news:
460a13df$0$29399$

je sèche et vous laisse danser la java pour invoquer l'Oracle.



MDR :-)) c'est idiot mais ta chute m'a déclenché un bon éclat de rire :-))
ce doit être le caractère inattendu dans le sérieux du sujet.

--
Cordialement,
Gabriel
Avatar
TestMan
Stephane Dupille a écrit :
Thierry Thomas écrit :
Quand on insère un enregistrement dans une table, les caractères
euros sont transformés en point d'interrogation inversé, que cette
insertion se fasse via une appli java ou par toad.


Quel est l'encodage déclaré dans les sessions clientes ? (à l'insert et
à la lecture)



Je viens de vérifier, le client est un client Java ODBC thin. Il
n'est pas censé faire de conversion de charset. Il y a un truc que je
ne pige pas.

Comment on fait pour déclarer au client JDBC thin d'Oracle le
charset qu'on souhaite manipuler ?

Je fais un xpost vers fclj. Rappel pour les nouveaux : j'ai une base
Oracle, et il me transforme les euros en point d'interrogation
inversé. Le charset de la base est bon. Mais il fait une conversion
quelque part, je ne sais pas où.



Bonjour,

Quel est l'encodage interne de votre base ?

Pouvez-vous nous coller les méta-propriétés de votre connexion JDBC (par
exemple, à l'aide de SquirelSQL)?

Histoire d'y voir plus clair ...

A+
TM
Avatar
William Marie
"Gabriel" a écrit dans le message de news:
460a957e$0$27381$


MDR :-)) c'est idiot mais ta chute m'a déclenché un bon éclat de rire :-))
ce doit être le caractère inattendu dans le sérieux du sujet.



C'est mon côté Zen (un premier pas vers la sérénité...). On effet si on
n'est que sérieux dans les discussions sérieuses on va mourir d'ennui.
--
=================================== William Marie
Attention antiSpam remplacer trapellun.invalid
par free.fr
Web : http://wmarie.free.fr
http://www.pandemonium.dnsalias.org (site expérimental)
====================================
1 2