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 :

[driver oracle thin] encodage utf8 vers latin1


Sujet :

JDBC Java

  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut [driver oracle thin] encodage utf8 vers latin1
    Salut,

    Je bosse sur une appli qui lit un fichier encodé en utf8 puis ensuite utiliser le driver jdbc de oracle pour l'insérer en base de données

    Le charset de ma base est latin1 ou western cp1252 (pas bien vérifié).

    Dans ce post :
    http://forums.oracle.com/forums/thre...sageID=1246910 [^]

    Oracle JDBC Thin always encodes data to UTF-8 before passing it to database. Database converts it to the database or to the national character set, depending on the form of use (CHAR vs NCHAR)

    J'avais cru que le driver prenait mes données en utf8 et les convertissait dans le charset de ma base.
    Apparemment ce n'est pas le cas puisque j'obtiens des choses de ce type :

    "si les objets seront validées"

    Une idée ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je connais pas les détails de mémoire (je reposterais si possible demain matin avec notre config boulot). Le charset est à pusieurs endroits, ta string parcours ces charset dans l'ordre:

    1) le charset du fichier
    2) le charset natifs de représentation des String en mémoire java
    3) le charset négocié entre le thin driver et la base de données (c'est une information liée à ta session sql actuelle, des valeurs par défaut sont configurées par ton admin db)
    4) le charset de stockage de la db

    entre 1 et 2, c'est toi qui configure en choisissant le FileReader correct
    entre 2 et 3, c'est le driver qui fait la convertion, aucun controle
    entre 3 et 4, tout se passe coté serveur, aucun controle de l'utilisateur.

    Ce qui se passe probablement, au point 3, le charset coté client et coté serveur n'est peut etre pas le meme (je connais pas les détails de la négociation, mais elle foire parfois ^^)

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    c'est effectivement la phase 3 je pense, mais sais-tu comment paramétrer la session ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    regardé la doc de oracle, je vois pas de possibilité de jouer avec le charset au niveau du driver jdbc. Par contre, pourrais-tu confirmer certains détails

    1) ton texte "erronné", il apparati où, comment? Se pourrait-il que ce soit le client qui, à la lecture de la db, fasse une erreur avec les charactère.
    2) As-tu confirmé, de manière certaine, que l'encodage, dans la base de donnée, est incorrect? Utilise les foncitons SQL manipulant les string, pour connaitre la taille de la chaine de caractère telle que vue par oracle.
    si "é" a une taille de 1 d'après oracle, c'est que l'encodage dans la db est correct, c'est ton client qui affiche mal. Si par contre çà a une taille de 2, c'est que c'est mal encodé dans la db. vsize te donnera la taille en bytes, strlen la taille en caractères. pour ce qui est de vsize, osef, par contre strlen nous intéresse.

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/03/2014, 11h38
  2. Delphi ORACLE encodage utf8
    Par rhproof dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2014, 13h57
  3. Réponses: 5
    Dernier message: 20/05/2012, 12h49
  4. MysqlImport pour convertir utf8 vers latin1
    Par olibara dans le forum Outils
    Réponses: 0
    Dernier message: 17/05/2009, 11h56
  5. probleme encodage utf8, latin1
    Par crischprolch dans le forum Outils
    Réponses: 1
    Dernier message: 06/07/2007, 16h02

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