Insertion caractères arabes à partir d'une application Java Standard
Je developpe une application Java qui doit insèrer des données mixtes (anglais , arab) dans une base de données.
les donnés sont lus depuis une fichier en entrée
Code:
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
} |
j'ai implementé mon DriverManager pour supporter le UTF-8
Code:
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); |
Aussi j'ai implementé les variables qui vont être codé en arab comme suit
Code:
1 2 3 4
|
//remark : variable en langue arabe
remark=new String (var_string_arab);
remark=new String (remark.getBytes("UTF-8")); |
La variable remark va être concatener à une autre variable String ,Cette variable peut contenir des caractère anglais et arab.
aprèes elle sera inserer dans une colonne du type CLOB
Code:
1 2
| Global_var=remark+var;
//insertion dans la BD |
les parmetre nls_parametre de la BD sont ci dessous
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
PARAMETER 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 |
Avec tous ces changement tous les donneés en arabes inseré sont tout simplement des point d'nterrogation. "???"
Avez vous une idées pour m'aider à fixer ce problème, je galère depuis trois jours sans aucun résultat.
Merci d'avance