Dans la même rubrique...

  • JavaScript alert et accents
mercredi 21 décembre 2005

JavaScript alert et accents

Dans certains cas, un accent saisi dans le code source javascript ne sera pas affiché correctement, mais remplacé par un point d’interrogation.

UTF-8 ou non ?

Une solution serait de mettre toutes les chaînes en UTF-8, mais cela pose un problème pour une application web telle que SPIP où l’utilisateur peut choisir l’encodage des pages.

Il faut donc trouver une solution universelle, quel que soit l’encodage de la page de destination.

Encodage octal des caractères

J’ai trouvé la solution à ce problème sur le site Clagnut : Accents in alerts.

Il suffit de remplacer les caractères accentués par leur équivalent en octal précédé de \ (anti-slash)

Par exemple :

  • é : \351
  • è : \350
  • ê : \352
  • à : \340

La table complète d’équivalence caractère/octal

Une piste à explorer

Un commentaire de la page semble indiquer que :

var y=document.createElement('span');
y.innerHTML='Ménage à trois.';
alert(y.innerHTML);

Permet de faire la conversion automatiquement.

Personnellement, j’ai un doute. Et vous ?

Vos témoignages

  • JavaScript alert et accents 30 janvier 2008

    Les prototypes peuvent aussi apporter une solution : http://www.gaudry.be/ast-rf-433.html

  • JavaScript alert et accents 3 mai 2007

    Le dernier exemple « piste à explorer » fonctionne nickel. Merci.

  • JavaScript alert et accents 20 décembre 2006

    Excellent votre astuce. ça marche et c’est tout simple. meli 20/12/2006

  • JavaScript alert et accents 20 mars 2006

    Bonjour,

    Après avoir bataillé ferme pour trouver une solution à l’envoi de caractères accentués par un confirm.

    J’ai tout converti en UTF-8, fichiers sources, tags meta du html, header en php.

    J’utilise l’éditeur PSPad qui écrit directement en Unicode.

    A+

    Roger

    • JavaScript alert et accents 22 novembre 2007, par Meloman

      Chez moi ça ne fonctionne pas avec le y.innerHtml Je suis en UTF-8 et je fais de l’Ajax (alert(retour de texte généré pas PHP)) ;