IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Java (JDBC) probème d'encodage lors d'insertion en base de données Oracle et execution à partir du DOS


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur Développement/Intégration
    Inscrit en
    Mai 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Développement/Intégration
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 30
    Points : 42
    Points
    42
    Par défaut 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 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.

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Par défaut la console de Windows (on ne dit plus le DOS : ça fait plus de 20 ans qu'il n'existe plus) n'utilise pas le même encodage que celle intégrée à Eclipse, mais la commande chcp 65001 devrait remédier à cela.

    Comment est exécute la requête contenue dans ton fichier ? Si tu charge le contenu du fichier via un quelque chose comme un FileReader pour le faire exécuter dans ton programme Java, il vaut mieux spécifier l'encodage du fichier au moment du chargement si non Java va essayer de détecter l'encodage système ce qui peut donner des résultats inattendus.

Discussions similaires

  1. Erreur lors d'une insertion dans base de données
    Par MeryemDahan dans le forum JDBC
    Réponses: 2
    Dernier message: 14/05/2014, 09h39
  2. Réponses: 1
    Dernier message: 09/05/2006, 12h00
  3. Réponses: 9
    Dernier message: 13/10/2005, 18h24
  4. Word et insertion de base de données
    Par beauchastel dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/10/2005, 17h54
  5. Réponses: 8
    Dernier message: 11/05/2005, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo