GNT sans publicité, site mobile, fonctionnalitées exclusives...

Ajax et accent

Le
osele
Bonjour,

J'ai beau avoir lu pas mal de page sur le sujet je ne comprends pas le
pb.

J'ai une page ouèbe qui s'affiche très bien en direct, avec des
accents, sous Firefox:

http://osele.free.fr/prg/accent.html

Dans, cette page, j'ai un script qui la charge en ajax et l'affiche à
la suite.

Visiblement, la page est systématiquement récupérée en =
utf-8 !

Ca ne marche pas pour les accents, qui sont remplacés par des ?

Quel est le pb ?

(Je ne peux pas toucher la page source qui est sur un autre site.)


J'ai simplifié le code et voici le source (j'ai essayé diffé=
rents
RequestHeader) :
<html><head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>pas de titre</title>
<script language="Javascript" type="text/javascript">
function ajax(url) {
var xhr=null;
// détection du navigateur pour la création de l'objet XMLHttpRe=
quest
(soit l'acronyme xhr)
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open( "GET", url,false);
// xhr.setRequestHeader("Content-Type", "application/x-www-form-
urlencoded;");
// xhr.setRequestHeader("Content-Type", "application/x-www-form-
urlencoded;charset=ISO-8859-1");
// xhr.setRequestHeader("Content-Type", "text/html");
xhr.setRequestHeader("Content-Type", "text/html;
charset=ISO-8859-1;");
// xhr.setRequestHeader("Accept-Charset", "ISO-8859-1;q=0.7");
// xhr.setRequestHeader("Accept-Language", "fr;q=0.8");
// xhr.setRequestHeader("Content-Type", "text/html; charset=utf-8");
// xhr.setRequestHeader("Content-Type", "text/
html;","charset=ISO-8859-1;");
xhr.send(null);
var tmpdiv = document.createElement('div');
tmpdiv.innerHTML = xhr.responseText;
document.body.appendChild(tmpdiv);
}
</script>
</head>
<body>
é<p/>
€<p/>
<a href='javascript:void(0);' onclick='ajax(location.href);'>cliquez
ici</a>
</body>

a+
Vincent
Lire les 39 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 8
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #731839

J'ai une page ouèbe qui s'affiche très bien en direct, avec des
accents, sous Firefox:

http://osele.free.fr/prg/accent.html


Response Headers - http://osele.free.fr/prg/accent.html

Age: 37
Accept-Ranges: bytes
Date: Mon, 16 Apr 2007 14:57:47 GMT
Content-Length: 1396
Content-Type: text/html
Server: Apache/ProXad [Dec 3 2006 11:06:18]
Last-Modified: Mon, 16 Apr 2007 14:36:23 GMT
Etag: "205d21-574-462389e7"
Via: 1.1 proxy2 (NetCache NetApp/6.0.4)

200 OK

Commence donc par configurer ton serveur pour qu'il annonce le jeu de
caractères utilisé dans l'entête HTTP Content-Type. Si ça ne marche pas
tu peux essayer de rajouter un attribut charset à la balise <script>,
mais je ne sais pas si ça fonctionne pour les scripts internes comme
pour les scripts externes.

vicnet
Le #731838
On 16 avr, 17:12, Olivier Miakinen
J'ai une page ouèbe qui s'affiche très bien en direct, avec des
accents, sous Firefox:
http://osele.free.fr/prg/accent.html
Content-Type: text/html

Commence donc par configurer ton serveur pour qu'il annonce le jeu de
caractères utilisé dans l'entête HTTP Content-Type.


En effet, il n'y rien, mais ca je ne peux le changer vu que le
serveur, c'est free !
Je n'ai pas accès à la conf appache.

Si ça ne marche pas
tu peux essayer de rajouter un attribut charset à la balise <script>,
mais je ne sais pas si ça fonctionne pour les scripts internes comme
pour les scripts externes.


Je viens de faire le test, ca ne fonctionne pas (j'ai changé le
fichier accent.html).

Ce que je ne comprends pas, c'est pourquoi Firefox voit le même
fichier comme de l'utf-8 alors qu'en accès direct ca marche.
J'ai la même réponse du serveur sous firebug en direct et en ajax....

Que faut-il faire sous js de firefox pour forcer l'iso ?

Néanmoins, merci pour ta réponse.

a+
Vincent


Mihamina (R12y) Rakotomandimby
Le #731837
vicnet -
En effet, il n'y rien, mais ca je ne peux le changer vu que le
serveur, c'est free !
Je n'ai pas accès à la conf appache.


htacces, tout ça...
genre: http://www.w3.org/International/que...ss-charset

ASM
Le #731597
vicnet -
En effet, il n'y rien, mais ca je ne peux le changer vu que le
serveur, c'est free !
Je n'ai pas accès à la conf appache.


htacces, tout ça...
genre: http://www.w3.org/International/que...ss-charset


Perso, je ne suis jamais arrivé à esspliquer à FF que responseText
n'était pas en utf-8
de même, avec Safari, je ne suis pas arrivé à lui faire comprendre que
respnseText pouvait être en utf-8.

La seule parade que j'ai trouvée est d'insérer le code de charset à la
mode XML dans les fichiers appelés via XMLHttpRequest


Le code suivant fonctionne bien chez moi :
(FF et Safari)

"http://www.w3.org/TR/xhtml1/DTD/xht...">
<html>
<head>
<title>test ajax et charset</title>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css">
<title>pas de titre</title>
<script language="Javascript" type="text/javascript">
function ajax(url) {
var httpRequest = false;
if (window.XMLHttpRequest)
{ // Mozilla, Safari,...
httpRequest = new XMLHttpRequest();
if(httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml');
}
}
else if(window.ActiveXObject)
{ // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
httpRequest.onreadystatechange = function() {
alertContents(httpRequest);
};
httpRequest.open('GET', url, true);
httpRequest.send(null);
}

function alertContents(httpRequest) {
if httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
var tmpdiv = document.createElement('div');
tmpdiv.innerHTML = httpRequest.responseText;
document.body.appendChild(tmpdiv);
}
else {
alert('Un problème est survenu avec la requête.');
}
}

}
</script>
</head>
<body>
<p>é
<p>ç
cliquez ici</a>
</body>
</html>


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


vicnet
Le #731595
On 17 avr, 01:43, ASM wrote:
La seule parade que j'ai trouvée est d'insérer le code de charset à la
mode XML dans les fichiers appelés via XMLHttpRequest



En effet, avec cette ligne tout fonctionne.

Le seul hic, c'est que je ne maitrise pas les pages html que je
charge.
Mon prog est en fait une extension firefox ajoutant des fonctions à
phpbb, fonctions utilisant ajax.
Or phpbb (plus précisement le template du phpbb sur lequel je fait mes
tests) n'insère pas cette balise xml.

Peut être que je peux forcer ceci dans l'extension elle même...

En tout cas, merci pour l'info et une partie de la solution !

a+
Vicnet

Publicité
Suivre les réponses
Poster une réponse
Anonyme