Me promenant sur quelques forums ce matin, je suis tombé sur une question très intéressante qui me paraissait toutefois évidente :)

Vu qu'apparement, ce n'était pas le cas pour tout le monde, je vais ici vous résumez le problème.

Prenons par exemple un caractère Cyrillic et étudions le cas suivant :

<img onclick="alert('&#1026;');" src="image.gif">
<script type="text/javascript">
alert('&#1026;');
</script>

Si vous faites le test, vous remarquerez que l'alert JavaScript renvoi ? alors que le clic sur l'image renvoi le caractère Cyrillic.

Quoi de plus normal effectivement car même si l'alert sur l'image reste du JavaScript, elle est incluse dans un tag HTML et donc interpretée en tant que tel.

Ce n'est pas le cas de l'alert incluse dans le tag <SCRIPT></SCRIPT> qui n'est pas interpretée.

La solution consiste donc à utiliser String.fromCharCode() :

<img onclick="alert('&#1026;');" src="image.gif">
<script type="text/javascript">
alert(String.fromCharCode(1026));
</script>

Travaillant pas mal avec Unicode ces temps-çi, je vous conseille l'utilisation des valeurs hexadécimales :

<img onclick="alert('&#1026;');" src="image.gif">
<script type="text/javascript">
alert(String.fromCharCode(0x0402));
</script>

Bon Unicode à tous ...

Aurelien
Member of WygTeam