Je développe une application Java qui tourne sur UNIX elle doit insérer des données mixtes (anglais, arabe) dans une base de données.
Les données sont lues depuis une fichier en entrée :
J'ai implementé mon DriverManager pour supporter le UTF-8 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IN=new BufferedReader ( new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8"))); while ((ligne=IN.readLine())!= null) { champs= ligne.split(";"); //reste des traitements }
Les données seront inserées dans une colonne du type CLOB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Properties prop = new Properties(); prop.put("user", user); prop.put("password", password); prop.put("useUnicode", "yes"); prop.put("characterEncoding", "UTF-8"); //path : url de la BD con = DriverManager.getConnection(path, prop);
Les paramètres nls_parametre de la BDD sont ci-dessous :
Tous les donneés en arabes inserées sont tout simplement des point d'nterrogation. "???"
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
16
17
18
19
20PARAMETER VALUE NLS_LANGUAGE FRENCH NLS_TERRITORY FRANCE NLS_CURRENCY ? NLS_ISO_CURRENCY FRANCE NLS_NUMERIC_CHARACTERS , NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD/MM/RR NLS_DATE_LANGUAGE FRENCH NLS_CHARACTERSET AR8ISO8859P6 NLS_SORT FRENCH NLS_TIME_FORMAT HH24:MI:SSXFF NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR NLS_DUAL_CURRENCY ? NLS_NCHAR_CHARACTERSET UTF8 NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE
Si je lance le programe java de ma machine windows xp l'insertion arabe est correcte, mais sur unix ça donne les "???"
Avez vous une idées pour m'aider à corriger ce problème, je galère depuis trois jours sans aucun résultat.
Merci d'avance.
Partager