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 :

Methode replace ne remplace pas les accents


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Points : 116
    Points
    116
    Par défaut Methode replace ne remplace pas les accents
    Bonjours à toutes et à tous,

    Ca va faire maintenant plus de 20 minutes que je suis bloqué à cause d'un problème et je ne vois pas du tout de quoi cela provient, je m'en remet donc à vous pour voir si vous avez une idée de mon soucis ^^

    Je vous explique, j'ai fait une fonction qui remplace (normalement...) les accents dans un texte et renvoie ce texte formaté (donc les accents sont mis en HTML).

    Voici donc mon fameux bout de code:

    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
     
    function EncodeString(s){
    	alert('avant : '+s);
    var txt=s.replace(/à/g,"à");
    txt=txt.replace(/á/g,"á");
    txt=txt.replace(/â/g,"â");
    txt=txt.replace(/ã/g,"ã");
    txt=txt.replace(/ä/g,"ä");
    txt=txt.replace(/å/g,"å");
    txt=txt.replace(/æ/g,"æ");
    txt=txt.replace(/è/g,"è");
    txt=txt.replace(/é/g,"é");
    txt=txt.replace(/ê/g,"ê");
    txt=txt.replace(/ë/g,"ë");
     
    alert('apres : '+txt);
    return txt;
    }
    Sauf que c'est bien beau... Théoriquement ça devrait fonctionner (du moins il me semble ^^) et donc quand je passe en paramètre à la fonction une chaine du genre "àèéàèéàè" cela me renvoie.........."àèéàèéàè" EXACTEMENT la même chose...

    Es-ce que vous voyez d’où pourrais provenir le problème docteur ?



    Merci d'avance pour votre aide

    A, et je vous rassure, la fonction est écrite de cette façons car je l'ai modifié 50 fois et j'en avais marre alors j'ai laissé ça de façon très sale je sais XD

  2. #2
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Points : 3 700
    Points
    3 700
    Par défaut
    et si tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    txt=txt.replace("é","é");
    txt=txt.replace("ê","ê");
    mais ce n'est que mon idée, fait en ce que tu veux !

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonjour,
    cela fonctionnera correctement pour peu que l'encodage des caractères soit le bon.

    TO
    : rotrevrep
    é et ê sont considérées comme des variables dans ce cas.

  4. #4
    Membre régulier Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Points : 116
    Points
    116
    Par défaut
    Merci pour ta réponse rotrevrep.

    Cela ne fonctionne pas et ne fonctionnera pas, car si je marque comme tu l'as écrit, javascript vas prendre é comme une variable, et ce n'en est pas une ^^

    J'ai cherché sur le forum quelqu'un qui avait le même problème ici exactement.

    J'ai donc recopier la fonction donnée en fin (celle qui est correcte donc) et cela ne passe pas non plus...

    Merci

    [EDIT]
    J'avais pas vus que tu avais écrit NoSmoking ^^

    Merci pour ta réponse, mais qu'entend tu pas l'encodage des caractère ?

    Tu veux dire dans mon html qu'il soit déclaré en temps qu'UTF-8 ou autre?

    Merci

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut


    Ben pourtant ça fonctionne bien...

  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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    utf-8 ...

  7. #7
    Membre régulier Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Points : 116
    Points
    116
    Par défaut
    Merci pour vos réponses,

    J'ai bien testé pour l'UTF-8, mais j'ai toujours le même résultat...

    Si je fais mon alert javascript il est bien censé m'afficher les caractère en tant que á et non "à" normalement non ?

    (pour le header html j'avais déjà ceci <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> mais ne change rien)

  8. #8
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('é'.replace('é','&aacute'));
    ça affiche bien '&aacute'.

  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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    il n'y a pas que le header ...
    le fichier lui même doit etre en utf8

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Willpower
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert('é'.replace('é','&aacute'));
    ça affiche bien '&aacute'.
    Ben oui... Je vois pas où se situe le problème

    Nom : replace.png
Affichages : 113
Taille : 88,2 Ko

  11. #11
    Membre régulier Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Points : 116
    Points
    116
    Par défaut
    Bonjour à tous,

    Merci SpaceFrog pour ta précision. Je vois désormais ou se situe le problème.
    Mais je ne vois pas vraiment comment je peux déclarer un fichier que j'include dans une page qui est en UTF-8 pour indiquer qu'il doit lui aussi être en UTF-8 :-S

    Merci encore pour votre aide



    [EDIT]

    Vus que je n'arrivais pas à mettre en UTF-8 une page que j'incluais dans la page principal, j'ai testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vstring = unescape(encodeURIComponent(vstring));
    Ensuite j'encode avec ma fonction et cela fonctionne très bien. Sauf que voilà... cela fonctionne avec une variable qui contient des accents mais pas avec deux variables... Je ne vois pas vraiment pourquoi... Le code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Conc_NomCategorie = unescape(encodeURIComponent(Conc_NomCategorie));
    Conc_NomSousCategorie = unescape(encodeURIComponent(Conc_NomCategorie));
    alert('modes utf-8 : '+Conc_NomCategorie);
    alert('modes utf-8 : '+Conc_NomSousCategorie);
     
    Conc_NomCategorie = EncodeString(Conc_NomCategorie);
    Conc_NomSousCategorie = EncodeString(Conc_NomSousCategorie);
     
    alert('modes EncodeString : '+Conc_NomCategorie);
    alert('modes EncodeString : '+Conc_NomSousCategorie);
    Donc avec "Conc_NomCategorie" tout passe hyper bien, mes accents sont bien remplacé. Par contre avec Conc_NomSousCategorie qui a exactement le même traitement je n'ai pas le même résultat... Il m'affiche n'importe quoi. Pourtant j'encode bien la variable non ?

    Merci d'avance

Discussions similaires

  1. le body.replace qui remplace pas
    Par zooffy dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/01/2008, 13h57
  2. Mon appli n'aime pas les accents
    Par dd_garion dans le forum Bases de données
    Réponses: 14
    Dernier message: 05/09/2007, 10h23
  3. oracle 10g XE n'accepte pas les accents
    Par gnaoui_9999 dans le forum Oracle
    Réponses: 6
    Dernier message: 27/08/2007, 17h47
  4. [RegEx] ereg qui ne trouve pas les accents
    Par Sephiroth Lune dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2007, 18h05
  5. Le '%' en SQL ne remplace pas les espaces...
    Par njac dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/09/2004, 17h10

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