5 votes

jQuery : échappement des caractères spéciaux

Le script suivant fonctionne bien sans avoir de caractère spécial. Malheureusement, j'ai plein de caractères spéciaux à remplacer. Comment puis-je remplacer les textes avec des caractères spéciaux dans jQuery ?

vous pouvez voir que mon script a, , , et plus de caractères spéciaux.

Merci pour votre aide.

Code HTML

 <script src="http://code.jquery.com/jquery.js"></script>

 <input type="submit" name="replace" id="replace" value="Replace" />

 <div class="my_div">Default1 content1</div>
 <div class="my_div">Default2 content2</div>

script

$('#replace').click(function() {
    $('.my_div').text(function( idx, oldHtml){
        return oldHtml
            .replace("Default1", '')
            .replace("Default2", '')
            .replace("content1", '');
    });
});

7voto

elcodedocle Points 3195

Vous devez vérifier que les paramètres d'encodage par défaut de votre serveur correspondent à l'encodage du document et/ou spécifier l'encodage approprié sur le document. Quelques exemples ici : http://www.w3.org/International/O-charset.en.php

Vous pouvez/devez également coder en HTML (au moins certains de ces caractères spéciaux) afin de les afficher correctement. Vous pouvez les échapper automatiquement en utilisant jQuery :

$('<div />').text(stringtoescape).html();

ou manuellement en suivant cette table de conversion http://www.w3.org/TR/html4/sgml/entities.html#h-24.3

2voto

jaytho Points 102

Je sais que cette question est ancienne, qu'on y a déjà répondu et qu'elle a été acceptée, mais j'ai eu beaucoup de mal à modifier un champ de valeur calculée dans un formulaire de saisie à partir de javascript/jquery qui comprenait des caractères spéciaux comme ci-dessus. Tout ce que j'essayais faisait que le champ du formulaire de saisie était rempli avec la chaîne complète échappée. Mihai m'a permis de contourner le problème avec la méthode \u truc. ergo :

avec champ de saisie :

<input type="text" name="string" id="string" />

Je ne pouvais pas faire

$('#string').value('&Phi;')

car le résultat serait la chaîne littérale '&Phi ;'.

Mais pourrait faire

$('#string').value('\u03a0')

qui fonctionne.

C'est peut-être évident pour la plupart des gens, mais j'ai perdu pas mal de temps sur ce sujet, et c'est une question difficile à poser en raison du grand nombre de termes de recherche généraux.

1voto

kapantzak Points 9413

Essayez de stocker votre fichier dans l'encodage utf-8

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X