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

PL/SQL Oracle Discussion :

Problème encodage des caractères..


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 32
    Points
    32
    Par défaut Problème encodage des caractères..
    Bonjour,
    J'ai besoin de votre aide pour régler un problème d'encodage, j'ai du texte qui est mal encodé dans ma base( qui est en UTF8) : le caractère 'é' est remplacé par
    'é', le caracère 'à' par 'à ', j'ai par exemple 'Frédéric François' que j'aimerai bien remplacer par 'Frédéric François'. J'ai créé pour cela la fonction :
    Code : 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
    20
    21
    22
    23
    24
     
    CREATE OR REPLACE FUNCTION stripped_string ( string_in  IN VARCHAR2)
       RETURN VARCHAR2
    IS
     string_out            NVARCHAR2(3276):=string_in;
    BEGIN
     
          string_out:=replace(string_out,'é','é');
          string_out:=replace(string_out,'ä', 'ä');
          string_out:=replace(string_out,'è', 'è');
          string_out:=replace(string_out,'Ã ', 'à');
          string_out:=replace(string_out,'ç', 'ç');
          string_out:=replace(string_out,'ô', 'ô');
          string_out:=replace(string_out,'ù', 'ù');
          string_out:=replace(string_out,'ï', 'ï');
          string_out:=replace(string_out,'ë', 'ë');
          string_out:=replace(string_out,'Ã?', 'É');
          string_out:=replace(string_out,'ô', 'ô');
          string_out:=replace(string_out,'ê', 'ê');
          string_out:=replace(string_out,'û', 'û');
          string_out:=replace(string_out,'î', 'î');
          string_out:=replace(string_out,'â', 'â');
       RETURN string_out;
    END stripped_string;
    ça ne marche pas, l'appel renvoie la même chaîne de caractères (celle passée en paramètre IN à la fonction), vous avez une idée sur comment résoudre ce problème.


    Merci d’avance


    Djam75

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Citation Envoyé par Djam75 Voir le message
    Bonjour,
    J'ai besoin de votre aide pour régler un problème d'encodage, j'ai du texte qui est mal encodé dans ma base( qui est en UTF8) : le caractère 'é' est remplacé par
    'é', le caracère 'à' par 'à ', j'ai par exemple 'Frédéric François' que j'aimerai bien remplacer par 'Frédéric François'. J'ai créé pour cela la fonction : ...
    ça ne marche pas, l'appel renvoie la même chaîne de caractères (celle passée en paramètre IN à la fonction), vous avez une idée sur comment résoudre ce problème.
    Attention, il faut être très précis pour ne pas aggraver votre situation !
    Le noeud du problème, c'est le paramètre NLS_LANG dans votre session cliente.
    Quel est votre OS ? Avec quel outil faites-vous ces tests ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 32
    Points
    32
    Par défaut
    Merci Pomalaix pour ta réponse, voici quelques paramètres de la base :
    NLS_LANGUAGE AMERICAN
    NLS_TERRITORY AMERICA
    NLS_CHARACTERSET UTF8
    NLS_NCHAR_CHARACTERSET UTF8

    On est dans un OS linux et j'utilise sqlplus

    Djam75

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Il faut avant toute chose vous assurer que la variable d'environnement NLS_LANG ait une valeur qui correspond au paramétrage linguistique de votre session Linux.
    J'insiste bien, à ce stade on parle uniquement d'OS du client.

    Si on suppose qu'au niveau Linux, vous avez ISO-8859-15, alors il faudra définir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export NLS_LANG=FRENCH_FRANCE.WE8ISO8859P15
    Si vous lisez l'anglais, cette FAQ vous dira tout : http://www.oracle.com/technology/tec...s_lang faq.htm

    Un paramétrage convenable de NLS_LANG est un prérequis absolu avant de s'occuper des problèmes éventuels de conversion.

Discussions similaires

  1. [Encodage] Formulaire html local (sans php) problème d'encodage des caractères
    Par DubeiserTM dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 01/06/2011, 10h34
  2. [FPDF] problème d'encodage des caractères cyrilliques
    Par rusey dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/10/2010, 09h50
  3. problème encodage des caractère avec netbeans
    Par space2alk dans le forum NetBeans
    Réponses: 3
    Dernier message: 19/07/2010, 16h34
  4. Problème d'encodage des caractères
    Par loic69100 dans le forum iReport
    Réponses: 0
    Dernier message: 19/03/2010, 10h17
  5. Problème encodage des caractères dans une JListe
    Par pontus21 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 27/08/2008, 00h57

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