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

  1. #1
    Membre averti 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 : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    dans ton retour ajax précise le charset du header

  3. #3
    Membre averti 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 : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    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 averti 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 : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    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 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    html_entites ?

  6. #6
    Membre averti 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 : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    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, 15h53
  2. Flash, Xml et les caractères spéciaux
    Par babar17 dans le forum Flash
    Réponses: 2
    Dernier message: 14/06/2007, 20h08
  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, 14h17

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