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 :

[DOM] Fonction d'encodage (ou décodage) de caractères accentués dans un string ?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut [DOM] Fonction d'encodage (ou décodage) de caractères accentués dans un string ?
    Bonjour,

    Je passe mon formulaire via un "innerHTML" par une variable de type string. Les caractères accentués s'affichent sous forme de sigles asiatiques dans ma page de destination. Je souhaiterais encoder (ou décoder) cette chaine de caractère pour que les caractères accentués s'affichent correctement.

    J'ai vérifié que lorsque je remplace un "é" par un "&eacute", le caractère "é" s'affiche correctement dans ma page de destination.

    Quelqu'un aurait-il une info concernant une fonction "déjà" existante qui permettrait d'encoder les caractères accentués (peut-être dans prototype.js, ou autre) ?

    Merci d'avance

    Petite précision, il me prend "épl" ou "ée" et me les change en sigles asiatiques

  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 640
    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 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    quand tu dis via un innerHTML tu veux dire ajax ?


    sinon un replace avec regExp

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut
    Dans ce cas précis, en fait non, je ne fais pas de l'AJAX !

    1ère question :

    si ma string s'appelle test, je dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var reg = regExp('(é)','g');
    test.replace(reg,'&eacute');

    2ème question :

    Si innerHTML concerne l'AJAX, que dois-je utiliser pour insérer mon formulaire HTML via javascript dans ma page de destination ?

    Merci encore et toujours SpaceFrog

  4. #4
    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 640
    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 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    je ne sais si pas bien ce que tu veux faire avec ton formulaire ?
    il vient d'ou et tu veux le mettre ou ?


    sinon pour le replace oui

    si tu as plsuieurs trucs à remplacer essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TabOut=new Array(new RegExp(/[é]/g),new RegExp(/[è]/g), ...)
    TabIn=new Array("&ecaute;","è",...)
    test.replace(TabOut,TabIn);

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut
    Pour être plus clair, mon formulaire pourrait très bien se trouver dans une page HTML seulement on verrait alors le chargement d'une nouvelle page... ce que je ne souhaite pas !

    A chaque sous-menu de mon menu correspond un formulaire qui vient s'afficher dans la partie content de la page. Ce n'est donc pas le cas d'un formualire envoyé en retour serveur mais simplement le cas d'un bout de code HTML que l'on vient charger.

    Du coup... est-ce que je procède comme il faut ??

  6. #6
    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 640
    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 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    que l'on vient charger oui ... mais comment ???
    un frame un iframe ...

    tu dis un innerHTML ? tu as le code html du form dans une variable javascript ???


    pour ajouter un form passe plutot par le dom
    ou alors chacun des forms dasn un div caché que tu rends visible ...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut
    Ok... je suis donc un barbare de la programmation !

    Je vais passer au DOM puisqu'il en est ainsi... (tu n'aurais pas un lien pour un ptit tutoriel ?)

    Cela dit, je n'arrive pas à faire fonctionner ton code avec RegExp !!

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    Citation Envoyé par polothentik
    Quelqu'un aurait-il une info concernant une fonction "déjà" existante qui permettrait d'encoder les caractères accentués (peut-être dans prototype.js, ou autre) ?

    Tu as essayé avec escape (pour encoder les caractères spéciaux) et unescape (pour la procédure inverse) ?

  9. #9
    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 640
    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 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    arf en effet en javascript il faut le faire en cascade, seul php accepte cette methode de remplacement d'array ...
    desolé de la confusion


    il faut alors envisager un truc du genre :
    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
     
    <script type='text/javascript'>
    function bar(texte){
    reg=new RegExp(/é/g),
     
    TabOut=new Array(new RegExp(/[é]/g),new RegExp(/[è]/g),new RegExp(/[à]/g))
    TabIn=new Array("&ecaute;","&egrave;","&agrave;")
    for (i=0;i<TabOut.length;i++){
    texte=texte.replace(TabOut[i],TabIn[i]);
    }
    document.getElementById('res').innerHTML=texte
    }
    </script></head>
     
    <body>
    <input type='text' id='foo' />
    <pre id='res'> </pre>
    <input type='button' value="go" onclick="bar(document.getElementById('foo').value)" />
     
    </body>
    mais curieusement cela ne fonctionne que pour le premier RegExp ????

Discussions similaires

  1. Caractères accentués dans un String
    Par ktto15 dans le forum Langage
    Réponses: 2
    Dernier message: 20/11/2009, 18h27
  2. Réponses: 1
    Dernier message: 09/10/2008, 15h17
  3. Réponses: 4
    Dernier message: 29/02/2008, 11h11
  4. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12
  5. Chaînes avec des caractères accentués dans Interbase
    Par François Marliac dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39

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