Bonjour,

J'ai un problème d'encodage avec le retour d'une requête AJAX. Je fait une requête sur une page HTML ayant comme charset : ISO-8859-1. Et quand j'affiche le contenu de la réponse : les caractères accentués sont remplacés par des �. Normalement les � sont affichés quand le fichier est en ISO-8859-1, mais le navigateur l'affiche comme de l'UTF-8. N'étant pas le propriétaire de la page HTML, je ne peux pas changer l'encodage de celle-ci.

La solution me semblait simple : convertir la chaine de caractères de l'ISO-8859-1 vers l'UTF-8. J'ai essayé unescape(encodeURIComponent(s)), mais les accents sont remplacés par � (pour le é). J'ai ensuite testé les fonctions : Utf8.encode(), UTF8.encode() et utf8_encode() ; sans résultat.

Voici un UserScript qui montre mon problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
// ==UserScript==
// @name    Isoutf
// @include http://www.kraland.org/
// @require http://code.jquery.com/jquery-2.0.3.min.js
// ==/UserScript==
 
$.get('http://www.kraland.org/main.php?p=5', function(data) {
    var src = $('.forum-c1:first td:first p:eq(1)', data).html();
    dest = src;
    // dest = unescape(encodeURIComponent(src));
    $('body').html(dest);
});
Après ces différents tests, la conversion ISO-8859-1 vers l'UTF-8 n'est peut-être pas la solution. Mais dans ce cas, je ne vois pas d'où peut venir l'erreur.