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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
Je peux sous sqlplus (UNIX) insérer et lire mon caractère ½

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.
Coté Windows GUI j'ai le code page 1252 donc je fixe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
avant de lancer dans la meme fenete DOS sqlplusw

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
alors que sous UNIX

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
D'après ce que j'ai vu BD est bien la valeur hexa du caractère ½.

Vous comprenez pourquoi je n'arrive ni à insérer ni a lire le ½ coté windows GUI ?

Merci de votre aide.