Java (JDBC) probème d'encodage lors d'insertion en base de données Oracle et execution à partir du DOS
Bonjour,
J'ai des problèmes d'encodage sur mon application java, lorsque j'exécute celle-ci à partir du DOS.
Lorsque je l'execute à partir d'eclipse je n'ai pas de problème d'encodage.
Le script DOS de lancement de l'application est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| set a_nomRepertoireLog=c:\TEMP\referentiel\log\
set a_nomRepertoireExecutable=c:\TEMP\referentiel\bin\
set a_identifiantUtilisateurDansScriptDos=E111111
set a_motDePasseDansScriptDos=xxxxxxxx
:: ##########################################
:: Execution du script
:: ##########################################
:: chcp affiche ou change la page de code et de jeu de caractère courants utilisés par DOS
:: chcp 65001 : change la page de code en UTF-8
chcp 65001
:: Valorisation de la variable NLS_LANG qui s occupe de l encodage JDBC entre le local et la base de données Oracle
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
:: Exécution de l application Référentiel Des Flux
java -Xms512M -Xmx1024M -jar %a_nomRepertoireExecutable%TraitementReferentielFlux.jar %a_identifiantUtilisateurDansScriptDos% %a_motDePasseDansScriptDos% |
Ma base de données oracle a bien son encodage en UTF8 :
Code:
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
Résultat de la requête :
PARAMETER |
VALUE |
NLS_CHARACTERSET |
AL32UTF8 |
Et pourtant l'une de mes tables Oracle contient des caractères bizarre :
Code:
select * from TB_FLUXDESCENDANTCHAMPSSIMPLES
Le début du résultat de la requête donne :
IDENTIFIANTDUFLUX |
FORMATDUTRANSFERTENENTREE |
DROITMETIERHTTPS |
LIBELLEDROITMETIERHTTPS |
PYDAEBGR |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBHR |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBHU |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBIE |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBIT |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBLT |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBLU |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBLV |
B |
E |
Droit File-Transfer Après Vente |
PYDAEBNL |
B |
E |
Droit File-Transfer Après Vente |
... |
|
|
|
La requête qui insère les données dans cette table est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| # Insertion de données dans la table TB_FluxDescendantChampsSimples a partir de la table TB_FluxDescendantNFF01
INSERT INTO TB_FluxDescendantChampsSimples (IdentifiantDuFlux, FormatDuTransfertEnEntree, DroitMetierHTTPS, LibelleDroitMetierHTTPS)
SELECT IdentifiantDuFlux, CodeFormatTransfertFlux, DroitMetierHTTPS, CASE
WHEN DroitMetierHTTPS = 'B' THEN 'Droit File-Transfer Vehicules Neufs'
WHEN DroitMetierHTTPS = 'C' THEN 'Droit File-Transfer Vehicules d Occasion'
WHEN DroitMetierHTTPS = 'D' THEN 'Droit File-Transfer Pièce de Rechange'
WHEN DroitMetierHTTPS = 'E' THEN 'Droit File-Transfer Après Vente'
WHEN DroitMetierHTTPS = 'F' THEN 'Droit File-Transfer Gestion Finance Administration'
WHEN DroitMetierHTTPS = 'G' THEN 'Droit File-Transfer Reparateur Agree'
ELSE 'Droit File-Transfer inconnu'
END AS LibelleDroitMetierHTTPS
FROM TB_FluxDescendantNFF01 |
Le fichier qui contient cette dernière requête est bien encodé en UTF-8.
J'en perd donc mon latin. Est ce que quelqu'un aurait une idée ?
Par avance merci.
Bien à vous.