Vista et IE : problème charset

JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008 - 13 sept. 2008 à 14:14
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008 - 14 sept. 2008 à 16:00
Bonjour!

J'ai un soucis de charset avec mon code javascript après avec récupéré une page web sur un serveur distant (ndd différent)

Mon code fonctionne parfaitement avec Firefox et IE 7 sous WinXP, il fonctionne avec FF sous Vista, mais pas avec IE 7 sous vista.

En gros il me récup de l'UTF-8 au lieu d'iso.

J'ai placé une balise meta pour specifier iso, j'ai placé un header php pour spécifier iso, ça marche pas.

Voici le code :

function makeRequest(method,url,parameters,callback,mode) {

    try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
    } catch (e) {}

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/html; charset=iso-8859-1');
            }

        } else if (window.ActiveXObject) { // IE
           try {
               http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
    if(mode==true)
            http_request.onreadystatechange = function() { callback(http_request); };
    http_request.open(method, url, mode);
    if(method=='GET') {
            http_request.send(null);
    } else {
        http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
        http_request.setRequestHeader("Content-length", parameters.length);
        http_request.send(parameters);
    }
    if(mode==false)
        callback(http_request);
    }


A savoir que l'encodage est bien sur "iso" dans les options d'IE.

Est-ce que quelqu'un saurait m'aider s'il vous plait ?

14 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 15:01
bonjour,
perso j'ai toujours le même principe

coté javascript :
                xml.open(.....);
                xml.setRequestHeader("Content-type", "charset=iso-8859-1");
                ....
                xml.send(...); 
coté php :
                <?php header('Content-type:text/html;charset=ISO-8859-1'); ?>

c'est tout. pareil avec UTF-8 sauf que les script sont sauvés en UTF_8
et tout baigne.

Cordialement     Bul    [mon Site] [M'écrire], <!--
0
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 15:03
Ben c'est déjà ce que j'ai!

http_request.open(method, url, mode);
    if(method=='GET') {
            http_request.send(null);
    } else {
        http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
        http_request.setRequestHeader("Content-length", parameters.length);
        http_request.send(parameters);
    }
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 15:06
ah... navré : je n'avais pas vu que cela te semble un problème spécifique à IE7 + Vista !
je ne peux pas répondre, pas encore sous vista, mais ça m'étonne....
( avec Xp rien de particulier au niveau paramétrage IE, affichage aui est apr défaut
  ne doit guère influer à ce niveau ... )
Cordialement    Bul  [mon Site] [M'écrire], <!--
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 15:07
>>Ben c'est déjà ce que j'ai!
et coté php ?
CordialementBul[mon Site][M'écrire], <!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 15:10
Aussi :]

Enfin normalement.

J'ai un index.php qui include mes pages. Je j'ai donc mis dans index.php, tout tout en haut
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 15:17
si tout est cohérent...
pas de mystère, ça doit baigner, obligatoirement , vista ou pas, IE7 ou pas.
Cordialement     Bul   [mon Site] [M'écrire], <!--
0
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 15:46
Ca pourrait pas venir du fait que ce soit de la récupération de données externes ?

Parce que non, ça baigne pas...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 sept. 2008 à 16:36
c'est à dire ?   un domaine, un site différent ?
si c'est le cas, on ne fait effectivement pas ce qu'on veut, mais
   opera, safati, ie, ff ( qui seul, depuis peu, offre des possibilités ) ...
   toutes versions de windows ou linux... ça aurait la même réaction.

à priori, je ne vois pas.
sauf si avec vista, ne pas avoir ce qu'il faut comme header
coté php, ne donne pas la même chose qu'avec xp par défaut ?

attendons d'autres idées peut-être ?

Cordialement    Bul  [mon Site] [M'écrire], <!--
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
13 sept. 2008 à 19:16
Salut,

J'ai vista et aucun pb avec les header en php ni setRequestHeader en javascript donc ça vient pas de la...

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008
13 sept. 2008 à 19:19
Je ne pense pas non plus que ça "vienne" de vista, mais ce qui est certains c'est que seulement vista et ie me le font. je suis allé jusqu'a installer une machine virtuelle pour m'en assurer moi même
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
14 sept. 2008 à 00:20
Bonjour,

Et plus simplement y'aurai pas une option pour choisir le charset par defaut sous IE 7 et au lieu d'etre en automatique ben c'est une valeur par defaut (dans ce cas UTF-8) je dis ça à tout hasard ;-)

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog
Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)

<fon></fon>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 sept. 2008 à 08:12
bah, si ça baigne pour nico avec IE7+Vista aucune raison que ça ne marche pas
pour toi, sauf comme je suggérais ainsi que maelob ( )  la valeur par défaut
qui n'est peut-être plus la même. ce qui est sûr c'est que ça doit marcher !
si erreur il y avait, ça aurait été rectifié depuis longtemps...
Cordialement     Bul  [mon Site] [M'écrire], <!--
0
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008
14 sept. 2008 à 10:52
Oui mais fait-il ça sur un serveur distant ?

Moi je récupère des topics de forum phpbb, des forums sur lesquels je n'ai pas la main.

@Maelob : le charset sous IE que ce soit sur mon site ou sur les sites que je récupère est bien noté ISO.
0
JiDW Messages postés 7 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 14 septembre 2008
14 sept. 2008 à 16:00
Yeeeess!!

Après de looongues heures d'études de code d'autres sites j'ai enfin trouvé la solution! Bon je comprends ce qu'elle fait mais je suis incapable de l'écrire moi-même. Si quelqu'un la connait et veut prendre deux minutes pour l'expliquer, je prends ^^

De ce que j'ai compris, elle utilise le responseBody pour étudier et corriger le responseText... Enfin je crois!

En tout cas voila la solution

Sur mon callback, au lieu de faire

callback(http_request.responseText);


je fais

callback(TexTConvert(http_request.responseText,http_request.responseBody));


Le TexTConvert est le suivant :

function TexTConvert(text, body) {
  var StrErr=String.fromCharCode(65535);
  var result="";
  var code="";
  var len=0;
  var begin=0;
  var ptr=0;
  while ((pos=text.substring(begin).indexOf(StrErr))!=-1){
    ptr+=pos;
    code=bcode(body,ptr);
    if(code<=191) len=1;
    else if(code<=223) len=2;
    else if(code<=239) len=3;
    else if(code<=247) len=4;
    else if(code<=251) len=5;
    else if(code<=253) len=6;
    else len=1;
    if(code==255) result+=text.substring(begin,pos+begin)+b2s(body,ptr,0);
    else result+=text.substring(begin,pos+begin)+b2s(body,ptr,ptr+len);
    ptr+=len;
    if(code==255) begin=text.length;
    else begin+=pos+1;
  }
  result+=text.substring(begin);
  return(result);
}


Ensuite on rajoute deux fonctions vbscript :

Function b2s(abin,abegin,aend)
  b2s=""
  If aend=0 Then
    aend=UBound(abin)+1
  End If
  For z=abegin to aend-1
    b2s=b2s&amp;chrw(ascw(chr(ascb(midb(abin,z+1,1)))))
  Next
End Function

Function bcode(abin,pos)
  bcode=ascw(chr(ascb(midb(abin,pos+1,1))))
End Function


Et tada! On retrouve nos accents :yaisse2:

Merci pour votre aide ^^

PS : le soucis de IE était qu'il accepte pas la propriété overrideMimeType!
0
Rejoignez-nous