Ajax/prototype.js, charset et IE

WRInaute passionné
Bonjour,

Je vous expose mon problème en simplifié.
Deux pages php enregistrées en Occidental (ISO Latin 1).

La première est composée des éléments suivants

Code:
<div id="page2"><? include("page2.php");</div>
<script type="text/javascript">rafraichirpage2()</script>

Avec évidement inclusion du fichier prototype.js et du javascript de la fonction rafraichirpage2().

Lors du chargement de la page, aucun problème de caractères. Mais lorsque la page2 est rafraîchie, les caractères apparaissent différemment selon les navigateurs (?, carré...)

J'ai trouvé une solution à ce problème !
Ajouter en haut de la page2 :
Code:
header('Content-Type: text/html; charset=iso-8859-1');

Cela fonctionne parfaitement sous Firefox, Safari..etc mais évidement cela ne fonctionne pas du tout sur IE !
Cela n'affiche même pas les mauvais caractères car la page2 ne se charge pas du tout.
IE indique des erreurs sur la page...

Après quelques tests, j'ai remarqué que si la page2 n'affichait aucun texte, il n'y avait aucune erreur. Un simple "Bonjour" après le header('...') de la page2 et hop erreur.

Avez-vous une idée du problème et une solution ? Merci.
 
WRInaute passionné
Humm pas bien compris ton histoire.

Tu as deux pages différentes? Ou tu charges un fichier php dans une div?

Quel est l'encodage de ton HTML (la balise <meta>) généré?

(et l'encodage faudrait un forum rien que pour ça!)
 
WRInaute passionné
Une page principale (avec balise meta iso-8859-1) composée de plusieurs "cadres" <div>.
Dans l'un d'eux, j'affiche/réactualise via Ajax un autre fichier php.

L'affichage par inclusion (include) ne pose aucun problème, quand c'est demandé via Ajax (soit par un événement ou périodiquement), le problème des caractères se pose.
 
WRInaute impliqué
Robinson a dit:
Bonjour,
Code:
header('Content-Type: text/html; charset=iso-8859-1');

slt,
Tente de spécifier ceci plutôt :
Code:
header( 'Content-Type: text/xml; charset=ISO-8859-1' );
a+
 
WRInaute passionné
humm cela n'y changera rien, du moins c'était bien celui-ci qui était en place ^^
Là c'était juste de mémoire et non un copier-coller :p
 
WRInaute impliqué
nan ok c juste qu'un jour je comprenais pourquoi sous ie uniquement le retour de responseXML.documentElement plantait à cause de l'absence du content type text/xml dans la page
nan là toi vu que tu utilises prototype, va débuggé la réponse...
j'imagine que les msg d'erreur d'ie sont incompréhensible comme d'hab?
 
WRInaute passionné
Bon en fait non tu avais raison ^^
Il fallait bel et bien remplacer html par xml.

Merci beaucoup.


pfiouuuu comment IE peut-il sortir une erreur aussi importante là-dessus, ça me trou le luc ^^
Et oui, les messages d'erreurs d'IE sont toujours aussi incompréhensibles... (ligne 1365, caractère 6...)
 
WRInaute passionné
Mouais mais il pourrait éviter de tout casser et de stopper le reste de la page.
Car le moindre petit javascript sur la page 1 ne marchait plus, même situé avant l'erreur.
Super pratique pour trouver d'où vient le problème qui n'était détecté par aucun outil et par aucun autre navigateur plus respectueux des normes...

Enfin bref, IE est toujours là pour faire chier les développeurs ^^
 
Discussions similaires
Haut