Bonsoir,
Mon but est d'insérer le caractère ½ et bien sur de pouvoir le lire.
Pour commencer, je tiens a préciser que j'ai lu le tuto Evitez les erreurs de conversion grâce aux NLS qui est très interessant mais que je n'ai pas réussi a y trouver la solution a mon problème.
J'ai donc une base Oracle 8i sous Unix avec un charset à WE8ISO8859P15.
Si je force le CHARSET coté UNIX avec
Je peux sous sqlplus (UNIX) insérer et lire mon caractère ½
Code : Sélectionner tout - Visualiser dans une fenêtre à part export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
Coté Windows GUI j'ai le code page 1252 donc je fixe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SQL> create table test ( CLIENT VARCHAR2(10) , COL VARCHAR2(2)); Table created. SQL> SELECT '½' FROM DUAL 2 / - ½ SQL> INSERT INTO TEST ( CLIENT , COL ) VALUES ('UNIX', '½') ; 1 row created.
avant de lancer dans la meme fenete DOS sqlplusw
Code : Sélectionner tout - Visualiser dans une fenêtre à part set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
alors que sous UNIX
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 SQL> SELECT '½' FROM DUAL; - ¿ 1* INSERT INTO TEST ( CLIENT , COL ) VALUES ('WIN', '½') SQL> / 1 row created. SQL> SELECT CLIENT, COL, RAWTOHEX(COL) FROM TEST; CLIENT COL RAWT ---------- -- ---- UNIX "carré noir" BD WIN ¿ BF
D'après ce que j'ai vu BD est bien la valeur hexa du caractère ½.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT CLIENT, COL, RAWTOHEX(COL) FROM TEST; CLIENT COL RAWT ---------- -- ---- UNIX ½ BD WIN ¿ BF
Vous comprenez pourquoi je n'arrive ni à insérer ni a lire le ½ coté windows GUI ?
Merci de votre aide.
Partager