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

JavaScript Discussion :

[XML] échapper les caractères du type "é"


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut [XML] échapper les caractères du type "é"
    Bonjour,

    j'utiise Ajax pour récupérer une liste de données au format XML.

    Ce flux XML est généré à partir de données d'une BD qui contient des chaînes de caractères avec des E majuscule accentués, O majuscule accentuées...

    Cela m'a obligé à spécifier comme encodeType de mon fichier XML : encoding="ISO-8859-1" eu lieu de : encoding="UTF-8"


    Le problème, c'est que lorsque je reçois le flux XML, tous les "é" sont remplacés par "é", pareils pour les è, à...
    Existe-il une fonction javascript qui permet d'échapper tous ces caractères ou faut-il que j'effectue un replace sur chacun d'entre eux ?

    Merci d'avance

    PS : les fonctions escape(), unescape(), encodeURI() et decodeURI() ne fonctionnent pas pour ce genre de caractères.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    dans ton retour ajax précise le charset du header
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    J'ai essayé mais cela n'a rien changé...

    En revanche j'ai réussi à obtenir le résultat escompté en remplaçant dans ma JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maChaine = monNoeudXml[0].getAttribute("designation");
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maChaine = decodeURIComponent(escape(monNoeudXml[0].getAttribute("designation")));

  4. #4
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Bon en fait ça ne marche pas lorsque dans ma chaîne de caractères XML j'ai des caractères du style É, Ê, Ë, È, Á, Â, À...

    Si je spécifie dans ma chaîne de caractères XML que l'encodage est de type UTF-8 : là ça ne marche pas du tout, le javascript req.responseXML ne me retourne rien.

    Et si je spécifie que l'encodage est de type ISO-8859-1, le req.responseXML fonctionne mais pas avec les majuscules accentuées :

    Par exemple, si ma chaîne est "échantillons", lorsque je l'affiche brute dans ma page web, elle devient "échantillons" et quand j'applique la fonction javascript decodeURIComponent, elle redevient bien "échantillons".

    Or, si ma chaîne est "Échantillons", lorsque je l'affiche brute dans ma page web, elle devient "Ã?chantillons" et quand j'applique la fonction javascript decodeURIComponent, j'ai une erreur javascript "L'URI à décoder contient un caractère incorrect".

    Que ce que je peux faire ?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    html_entites ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    html_entites ?
    Non ce n'était pas cela mais après maintes bidouilles, j'ai enfin compris mon erreur, ou plutôt mon oubli.

    Pour générer mon flux XMl, j'ai utilisé les objets du package org.w3c.dom
    Ensuite, pour récupérer le flux XML sous forme de chaîne de caractères, j'ai utilisé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Source source = new DOMSource(document);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Result result = new StreamResult(out);
    Transformer xformer = TransformerFactory.newInstance().newTransformer();
    xformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
    xformer.transform(source, result);
    String chaineXML = out.toString();

    J'avais oublié la ligne en rouge...

    Une fois cela corrigé, côté client je récupère ma chaîne XML déjà formatée, plus besoin d'utiliser des méthodes javascript !

    Merci de ton aide même si sur ce coup là tu ne pouvais pas vraiment m'aider puisque je n'avais même pas posté le bout de code qui posait problème

    Bonne journée.

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

Discussions similaires

  1. fichier xml et les caractére spéciaux
    Par dalilnet dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 23/09/2008, 14h53
  2. Flash, Xml et les caractères spéciaux
    Par babar17 dans le forum Flash
    Réponses: 2
    Dernier message: 14/06/2007, 19h08
  3. [SQLite] Échapper les caractères spéciaux d'une requête ?
    Par Franz2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2007, 13h17

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