Bonjour tout le monde.
Je me casse depuis deux jours les dents sur le même problème : un problème d'encodage.
Une page encodée en ISO (avec les headers qui vont bien) inclue un JS (encodé en ISO aussi).
Ce JS fait une requête AJAX vers une base de donnée, stockée dans un fichier texte (donc pas possibilité de spécifier de header), lui aussi encodé au format ISO.
L'AJAX étant par défaut en UTF-8, les caractères accentués ne sont pas affichés correctement. Pour firefox, la solution à été vite trouvée :
Code Javascript :
xhr.overrideMimeType('text/html; charset=ISO-8859-15');
Par contre IE, pas moyen.
J'ai lu qu'il falait ajouter
Code Javascript :
xhr.setRequestHeader("Content-type", "charset=iso-8859-1");,
mais cela ne fonctionne pas avec moi (je fait un GET, pas un POST, ça vient peut être de là).
Sous IE, les caractères spéciaux récupérés par la requête AJAX sont tous remplacés par la valeur 65535 (caractère ﲴ). Donc pas moyen de passer par une fonction du type utf8_decode de php. Donc le travail doit se faire en amont, au niveau de la requête.
Donc est-ce que quelqu'un aurait un moyen de faire en sorte que les requêtes envoyées par IE récupèrent de l'ISO ?
Merci d'avance.
En annexe, mon code :
Code Javascript :
var xhr;
try { xhr = new ActiveXObject('Msxml2.XMLHTTP');}
catch (e){
try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
catch (e2){
try { xhr = new XMLHttpRequest(); xhr.overrideMimeType('text/html; charset=ISO-8859-15');
}
catch (e3) { xhr = false; }
}
}
xhr.open( "GET", "truc.txt", true);
xhr.setRequestHeader("Content-type", "charset=iso-8859-1"); // ne fonctionne pas
xhr.send("");