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 Batch : 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
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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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.