[Oracle] CharSet => Je pète un plomb.

CharSet => Je pète un plomb. [Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 02-08-2004 à 16:19:29    

Alors.
 
Sur un serveur UNIX, on a une application qui travaille avec le charset ISO-8859-1.
Elle écrit des données dans une base de données Oracle dont le charset est US-ASCII.
 
Donc, quand on enregistre dans la base, on a :
"ihjnbkoqt|{yg`&@" au lieu de "éèêîâëïñôüûùçà&@"
 
Je vais donc cette requête (dans SQL Plus, directement en telnet sur le serveur Unix, parceque sinon ce tocard de TOAD refait une conversion) :
 


select convert(tradesig1, 'WE8ISO8859P1', 'WE8ISO8859P1')  
from prm  
where codsoc = 0 and
codpro = '5B00021' and codlan = 'ENG'


 
Ca marche bien.
 
Maintenant, j'ai un site WEB, donc la base de données est sur un autre serveur Oracle, donc la localisation est ISO-8859-1 (pour faire simple)
 
Lorsque j'exporte mes données d'un serveur à l'autre (directement depuis Oracle, en utilisant un DBLink) j'utilise cette requête :
 


insert into prm@ecomtest.world
(select 0, codpro, 'ENG', convert(tradesig1, 'WE8ISO8859P1', 'WE8ISO8859P1')  
from prm  
where codsoc = 0 and
codpro = '5B00021' and codlan = 'ENG')


 
Logique quoi...
 
Seulement, si je fais :
 


select * from prm@ecomtest.world


 
Ben ça me retourne "ihjnbkoqt|{yg`&@", alors que j'ai portant bien mis la chaîne formattée avec le bon charset :/
 
Depuis le site web, idem, j'affiche comme un con "ihjnbkoqt|{yg`&@" quelquesoient les paramètres que je puisse mettre à convert dans mon select, ou le charset spécifié au niveau HTML :/
 
Vous avez une idée ? :sweat:

Reply

Marsh Posté le 02-08-2004 à 16:19:29   

Reply

Marsh Posté le 02-08-2004 à 16:52:18    

toc toc toc ?

Reply

Marsh Posté le 02-08-2004 à 17:19:39    

En passant (vous pourrez peut-être me répondre là dessus...
 
Avec SQL+, on ne peux pas faire plusieurs requêtes à la suite ? Je passe par un buffer (ed), et ça plante quand je met un ;
 
Ca merde aussi si je met des / à la place (:??:)
 


"afiedt.buf" 2 lines, 97 characters
 
  1  select design1 from pro where codsoc = 0 and codpro = '5B00021';
  2* select * from v$nls_parameters;
SQL> /
select design1 from pro where codsoc = 0 and codpro = '5B00021';
                                                               *
ERROR at line 1:
ORA-00911: invalid character
 
 
SQL>

Reply

Marsh Posté le 02-08-2004 à 18:16:56    

Bah heureusement qu'on a des experts au taff, parceque là, j'étais pas près de trouver !!!
 

Citation :

Sylvain Devidal/Medi... hello mandar
Sylvain Devidal/Med... how are you ?
Mandar Godbole/Me... Hello
Mandar Godbole/Me... I am fine. What about you ?
Sylvain Devidal/Med... i'm ok but a little problem ;)
Sylvain Devidal/Med... do you know something about dsn and charset ?
Sylvain Devidal/Med... currently, in gnxdbt01 we use US7ASCII charset
Mandar Godbole/Me... ok
Sylvain Devidal/Med... generix writes in some iso-8859-1 strings
Sylvain Devidal/Med... when selecting values with sqlplus from unix session, i get right characters
Sylvain Devidal/Med... because unix uses iso-8859-1 charset for user sessions
Sylvain Devidal/Med... but when i try to read the same data using dsn from a windows 2000 server, then i can't get the right characters
Sylvain Devidal/Med... i tried to use convert(string, charset_new, charset_old) but i can't obtain the right charset
Sylvain Devidal/Med... currently i try from a iis installed on my computer. if you want I can copy the page on another server
Mandar Godbole/Me... éèêîâëïñôüûùçà&@ is your test data right?
Mandar Godbole/Me... something comes like this
Sylvain Devidal/Med... yes that's right. and I can't get it from dsn connection using iso-8859-1 charset. i get "ihjnbkoqt|{yg`&@" or "eeeiaei?ouuuca&@" but never "éèêîâëïñôüûùçà&@" :/
Mandar Godbole/Me... Which ODBC driver you are using ?
Mandar Godbole/Me... Microsoft or Oracle ?
Sylvain Devidal/Med... microsoft for oracle. do you want i try with oracle native drivers ?
Mandar Godbole/Me... Well there are 2 things you can try
Mandar Godbole/Me... On the Windows 2000 server Go to Enviornment Settings ( in My Computer - Properties )
Mandar Godbole/Me... i.e. Advanced - Enviornment Variables
Sylvain Devidal/Med... yes
Mandar Godbole/Me... set this system variable NLS_LANG=AMERICAN_AMERICA.US7ASCII
Mandar Godbole/Me... Restart IIS
Mandar Godbole/Me... After that you can try both drivers.
Mandar Godbole/Me... I hope both should ( if not at least one should ) give the correct result.
Mandar Godbole/Me... Try this one and let me know
Sylvain Devidal/Med... ok i try it now
Sylvain Devidal/Med... oracle driver seems buggy, my iis service is frozen since i tried it. it would take some time to restart iis ;)
Sylvain Devidal/Med... hmmm... i need to restart my computer, iis service can't be stopped and it's process can't be killed :(


 
(Reboot)
 

Citation :

Sylvain Devidal/Medi... thant you !!! it works !!!!
Mandar Godbole/Me... Which driver is good ?
Sylvain Devidal/Med... i use the microsoft one. there is less bugs than in the oracle one
Mandar Godbole/Me... :-)))
Sylvain Devidal/Med... (oracle one have big issues manipulating LONG type)
Mandar Godbole/Me... Microsoft products having the MAX bugs in the WORLD  
Sylvain Devidal/Med... after oracle :D
Mandar Godbole/Me... :-)))


Message édité par Arjuna le 02-08-2004 à 18:17:25
Reply

Sujets relatifs:

Leave a Replay

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