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 :

caracteres spéciaux, encodeURIComponent incorrect


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 30
    Par défaut caracteres spéciaux, encodeURIComponent incorrect
    Bonjour, j'ai un soucis bizarre en javascript : encodeURIComponent semble mal encoder... Pour illustrer mon probleme j'ai fait un petit code tres simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
    <body>
    <form>
    <input type="text" id="rechercheLibelleReferentiel"/>
    <input type="button" class="BoutonT2" value="Rechercher" onClick='alert(encodeURIComponent(document.getElementById("rechercheLibelleReferentiel").value));' />			
    </form>
    </body>
    </html>
    Quand je tape "è" dans l'alert je me retrouve avec deux caracteres : %C3%A8 . Du coup quand je recupere ca sur mon serveur ca veut plus rien dire deux caracteres pour un... En fait d'apres la table hexa on a:
    Ã => C3
    ¨ => A8

    Je test sous IE ou firefox ca me fait la meme chose. Ca doit etre un probleme de charset mais je ne vois rien de special pourtant... comment bien utilisé le encodeURIComponent pour qu'il me traduise par è => E8 qui est la bonne correspondance?

    Merci d'avance de m'aider.

  2. #2
    Membre averti
    Inscrit en
    Août 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 30
    Par défaut
    bon bah comme personne n'a d'idée, je pense repasser derriere le mauvais encodage fait par encodeURIComponent en transformant les suites tel que %C3%A8 par le vrai code %E8 du caractere "è" dans une fonction à la main. Je vais deja faire pour tous les caracteres accentués... tant pis pour les autres caracteres spéciaux.

    Mais si qq'un retrouve une idée n'hesitez pas, je suis souvent sur le fofo

  3. #3
    Membre averti
    Inscrit en
    Août 2002
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 30
    Par défaut
    J'ai contourné le probleme en n'utilisant pas encodeURIComponent mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    escape(libelleRecherche)
    et coté serveur pour moi en java j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    libelleRecherche=URLDecoder.decode(libelleRecherche, "ISO-8859-1");
    Voila je laisse ouvert le thread car ca m'explique pas pourquoi le encodeURIComponent marche mal mais au moins si qq'un tombe sur le meme probleme a resoudre il a ma solution de secours.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    Bonjour, je rencontre le même problème.

    Apparemment, c'est dû au fait que encodeURIComponent encode en UTF-8,
    alors que escape encode en latin i.e. ISO-8859-1.

    Le problème est que escape ne convertit pas certains symboles dont "+".

    En attendant mieux, il faut coder sa propre fonction d'encodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function escapeURIComponent(str) {  
      return escape(str).replace(/\+/g, '%2B');
    }

  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
    Oulà !!!
    évite de te lancer dans des replaces comme ça, tu tomberas toujours su un caractère oublié ... et gère plutôt le charset ...

    Celui de ton fichier ..
    celui de la balise meta de ta page
    celui du header de ta page
    celui de la source des données ( BDD )
    celui de ton serveur

    un petit topo sur le sujet
    http://j-willette.developpez.com/tut...-site-en-utf8/
    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 habitué
    Inscrit en
    Juillet 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 13
    Par défaut
    Oula oui !

    Si je pouvais, je passerais toute l'appli en UTF-8 mais je développe simplement la partie client, je n'ai pas accès aux serveurs ni aux BDD.

    Mes fichiers sont encodés en ANSI (contrainte de l'environnement).
    J'utilise le charset ISO-8859-1 dans mes META.

    Il se trouve que j'utilise jQuery.ajax pour poster mon formulaire. Si je sérialise mon formulaire avec jQuery.fn.serialize, le résultat sera encodé en UTF-8 (car il utilise encodeURIComponent). J'ai donc développé mon propre jQuery.fn.serializeLatin() pour mes besoins.

    Si tu as une meilleure solution à proposer je suis preneur...

Discussions similaires

  1. afficher caracteres spéciaux
    Par Mousk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 15/03/2006, 13h28
  2. [XML] Probleme de caracteres spéciaux
    Par Azonec dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 13/12/2005, 15h48
  3. remplacer les caracteres spéciaux
    Par roninou dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2005, 15h26
  4. Analyseur XML : extraction des caracteres spéciaux
    Par abdou.sahraoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/07/2005, 15h07
  5. [DB2] supprimer les caractere spéciaux
    Par guin dans le forum DB2
    Réponses: 1
    Dernier message: 17/01/2005, 16h34

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