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

Oracle Discussion :

Problème avec UTF8


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Problème avec UTF8
    Bonjour à tous,

    J'ai un souci avec une extraction fichier depuis une base Oracle dont le jeu de caractères est en UTF8.

    Le format du fichier en sortie nous impose des longueurs fixes pour chaque zone qui sont plus petites que les colonnes de la base correspondantes.

    Lorsque je récupère une colonne d'une table, je suis obligé de convertir en WE8MSWIN1252 pour récupérer les accents dans mon fichier et de réaliser un SUBSTR pour coller à la zone fichier.

    Mais UTF8 gère les accents sur 2 octets et la manipulation ne marche pas :

    exple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare
    text table_oracle.variable%type; =>(varchar2(96) par exemple)
    text_2 varchar2(16);
     
    begin
     
    select variable into text from table_oracle where id = xxxxx;
    text_2 := SUBSTR(CONVERT(text, 'WE8MSWIN1252', 'UTF8'),1,16);
     
    dbms_output.put_line ('text : '||text_2);
     
    end;
    Ca ne marche pas j'ai une erreur ORA-06502: PL/SQL :
    erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit à chaque fois que je rencontre un accent.

    Que faire ?
    Je pourrais faire un replace ou un translate pour chaque accent mais je voudrais savoir s'il n'y a pas une solution plus simple...

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    et si tu déclares text2 comme text ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    je ne peux pas puisque j'ai besoin d'un format fixe à 16 caractères en sortie.
    mais je crois avoir trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare
    text table_oracle.variable%type;
    text_2 char(16 char);
     
    begin
    select variable into text from table_oracle where id = xxxxx; 
    text_2 := SUBSTR(text,1,16);
    dbms_output.put_line ('text : '||text_2);
     
    end;
    en déclarant text_2 en 16 char, je n'ai plus de problème de conversion ni de substring.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    en effet, par défaut c'est 16 bytes

    PS : merci de penser aux balises CODE à l'avenir

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    oups désolé... c'était mon premier post ....

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    et le bouton Résolu aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème encodage UTF8 avec mysql
    Par herykid83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/07/2011, 16h49
  2. probléme avec TQuery et UTF8 ?
    Par PapY_TcheB dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/02/2010, 11h44
  3. [RegEx] UTF8, problème avec preg_replace
    Par Space Cowboy dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2008, 16h42
  4. GTK et UTF8 : Problème avec la fonction get_locale_from_utf8
    Par hubux dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 19/04/2007, 17h16
  5. [Socket] - Problème recv avec UTF8
    Par JuS80 dans le forum Réseau
    Réponses: 4
    Dernier message: 17/04/2007, 09h46

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