Comportement bizarre de UTF-8 ?
Bonjour !
je voudrais bien vous demander votre avis pour un petit mystère :
J'ai une function qui affiche un texte, ou un autre, selon le choix d'utilisateur.
(Ces différents textes sont directement à l'intérieur de cette function, on y accède par des if...)
- Ca marche très bien si cette function est déclaré sur la page html elle même.
- Ca affiche des losanges noirs avec "?" si je mets cette function sur un fichier externe. :koi:
La page html contient la balise :
Code:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
Dans le cas ou je choisi dans le navigateur (Safari) encodage du texte : "Occidental (Mac OS Roman)", tout s'affiche bien. Si il est réglé "par défaut" ou sur "UTF-8", ça ne marche pas...
Le problème c'est arrangé si j'ai remplacé à la main par ex. "ê" par "\u00EA". Bien, mais je préfère d'éviter de tout remplacer manuellement...!
J'ai aussi essayé de rajouter un encodage suivant sur le fichier externe, mais ça a donné juste d'autres bizzarreries :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
// Librairie by The Rubik's Man © 2005-2006
var UTF8_tool = function (){}
UTF8_tool.encode = function (string)
{
var string = string.replace(/\r\n/g,"\n");;
var utftext = "";
for (var n = 0; n < string.length; n++)
{
var c = string.charCodeAt(n);
if (c < 128)
{
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048))
{
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else
{
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}; |
(Avec cet encodage par ex "ê" devient "ê" dans le code et toujours n'importe quoi à l'affichage).
Vous avez une idée d'ou vient le problème ?
Merci infiniment d'avance !
Tooomas