OVH Cloud OVH Cloud

safari 1.3, ajax et UTF-8

21 réponses
Avatar
Etienne SOBOLE
Salut

J'ai un script PHP tout bete qui est celui-ci
<?
header("Content-type:text/html; charset=utf-8");
echo utf8_encode('cinéma');
?>

et une page html qui fait une requete ajax sur le script ci dessus et
affiche le résultat...
Et bien ca marche sous tous les navigateur sauf safari 1.3.
Celui-ci a décidé de m'afficher le text à sous la forme
cinéma

Donc en gros, aussi byzarre que cela puisse paraitre, il n'a pas compris que
le message etait en utf-8 !!!
pour tant la page HTML est en PHP, ca c'est certain.

Quelqu'un aurait deja eu ce probleme avec ce vieux navigateur....

merci
Etienne

10 réponses

1 2 3
Avatar
Pierre Goiffon
ASM wrote:
Avec Safari j'ai un autre problème pour les pages d'Etienne :
"une erreur est survenue lors de l'ouverture de la page"



Hahu, curieux ! Tu ne précise pas quelle version de Safari ?

En regardant avec LiveHttpHeaders je vois une réponse immédiate (un 200
OK qui suit le GET) pour les 2 pages (pour ask_cinema.php, qu'elle soit
appelée directement ou par XHR)

Etienne a-t-il inséré un traitement spécifique sur le user_agent ?

Il faudrait vérifier avec quel codage Safari lit la page cinema.php



Safari a son menu Encodage sur "Par défaut"
et chez moi celui-ci est : Iso Latin 1



?!!!????
Voilà qui est très étrange ! Et cela expliquerait le comportement
constaté : "cinéma" au lieu de "cinéma", c'est une chaine en UTF-8 lue
comme de l'ISO Latin-1 ou dérivé (Latin-9 ou Windows-1252). Donc la
chaine est bien récupérée en UTF-8, écrite dans la page dans le
navigateur, mais cette dernière étant lue incorrectement comme du Latin-1...

Vous parlez tous les 2 de plusieurs versions, est-ce que les 1.x ne
sont pas obsolètes



Comme déjà dit, les Safari sont installés lors des installs des Systèmes.
Chaque nouvelle version du Système (et accessoirement mise à jour du
Système) apporte une nouvelle version de Safari.
La version 1.3 (que je n'ai plus) devait être relative à l'OS 10.3
Je ne sais (mais je crois que non) si le 10.3.9 passe Safari en v2.
Il doit probablement falloir être en 10.4 pour mériter la v2.
(je suis en OS 10.4.3)



Les mises à jour OS sont payantes je suppose ? Si oui j'imagine qu'il
reste donc encore de nombreux Safari 1.x dans la nature ?

Le curieux reste que l'exemple de Pierre (avec fonction développée)
fonctionne dans les Safari. Mais peut-être son serveur est-il plus
proprement réglé ?



Comme le dis Etienne, la page de mon exemple est en Latin-1... J'ai
ajouté une page servie en UTF-8 :
http://pgoiffon.free.fr/_temp/XHR_charset.html
Avatar
ASM
En réponse à Etienne SOBOLE qui écrivit, en date du : 20/08/07 14:10,
le message suivant :
Bon on s'enbrouille la !!!

Alors le probleme original est une page en UTF-8
qui appele en ajax une page en UTF-8!



Toutafé (du moins pour la requête)
et on voit bien que Safari suit le mouvement et reste en utf-8 pour tout.

Donc l'exemple de pierre ne résout pas le probleme.
Il faudrait convertir sa page 'XHR_charset_latin1.php' en UTF-8 pour voir le
probleme.



Inutile puisqu'on a vu que ça fonctionnait
(même si dans ses préférences c'était de l'iso latin par défaut).

Non, il faudrait voir le test proposé par Pierre mais cette fois avec
uniquement des en-têtes en Iso Latin pour voir si Safari continue à
suivre le mouvement ou s'il kkbouille la requête en utf-8 malgré
l'indication contradictoire.

à mon idée, à la requête :
- il doit suivre les en-têtes http
- à défaut d'en-têtes
il doit choisir le charset indiqué dans ses préférences
(c'est le cas que j'ai dans ma 'tite démo
où le charset n'est pas dans l'en-tête http)

Sinon pour safari 1.3
Moi j'ai mac OSX 10.3 et j'ai mi toutes les mises a jour automatique, et
j'ai toujours safari 1.3 !!!



C'est normal.
Je crains que la version 2 nécessite le système 10.4 :-(

ASM; j'ai pas bien compris ta reponse sur safari 2.0.
sur mon exemple tu voit cinéma correctement ou pas?



Non, non, et non !
ou
c'est pas correct non plus.

.
Avatar
ASM
En réponse à Pierre Goiffon qui écrivit, en date du : 20/08/07 14:32,
le message suivant :
ASM wrote:
Avec Safari j'ai un autre problème pour les pages d'Etienne :
"une erreur est survenue lors de l'ouverture de la page"



Hahu, curieux ! Tu ne précise pas quelle version de Safari ?



Non, vu que j'ai déjà dû l'indiquer par 2 fois (et +)

2.0.2


En regardant avec LiveHttpHeaders je vois une réponse immédiate (un 200
OK qui suit le GET) pour les 2 pages (pour ask_cinema.php, qu'elle soit
appelée directement ou par XHR)



certes
et l'erreur ne se matérialise qu'après coup
Safari cherchant à charger une 2ième page qui se mord la queue (à ce
qu'il semble).

Etienne a-t-il inséré un traitement spécifique sur le user_agent ?



à tous coups c'est ça qui merdoie alors.

Les mises à jour OS sont payantes je suppose ? Si oui j'imagine qu'il
reste donc encore de nombreux Safari 1.x dans la nature ?



Les MàJ sont gratuites mais le passage de 10.y à 10.x est payant.

Comme le dis Etienne, la page de mon exemple est en Latin-1... J'ai
ajouté une page servie en UTF-8 :
http://pgoiffon.free.fr/_temp/XHR_charset.html



Chez moi (Safari 2.0.2) c'est nickel :

(copie de ce que affiché après requêtes)
page en UTF-8 appelant par XHR une page servie en :

é

ç

ISO Latin-1

UTF-8

Page servie en ISO Latin-1

é
è

Page servie en UTF-8

é
è
(/copie)

.
Avatar
Pierre Goiffon
ASM wrote:
Tu ne précise pas quelle version de Safari ?



Non, vu que j'ai déjà dû l'indiquer par 2 fois (et +)

2.0.2



Hahum, mes excuses j'ai un peu de mal aujourd'hui

Les mises à jour OS sont payantes je suppose ? Si oui j'imagine qu'il
reste donc encore de nombreux Safari 1.x dans la nature ?



Les MàJ sont gratuites mais le passage de 10.y à 10.x est payant.



Cad que c'est gratuit de 10.3 à 10.3.9 mais payant de 10.3.* en 10.4 ?

http://pgoiffon.free.fr/_temp/XHR_charset.html



Chez moi (Safari 2.0.2) c'est nickel :



Bon, bonne nouvelle !
Avatar
ASM
En réponse à Pierre Goiffon qui écrivit, en date du : 20/08/07 16:30,
le message suivant :
ASM wrote:

Les MàJ sont gratuites mais le passage de 10.y à 10.x est payant.



Cad que c'est gratuit de 10.3 à 10.3.9 mais payant de 10.3.* en 10.4 ?



C'est à dire que tu achètes un *nouveau* système 10.qquechose

Il n'y a pas de remise si on passe d'1 version majeure à plus.
Bien que j'ai vu des DVD de mise à niveau d'une version à la suivante
(sans doute pour les machines vendues lors d'une évolution du système?).

Seules sont gratuites les 10.maVersion.cetteMiseAJour

http://pgoiffon.free.fr/_temp/XHR_charset.html



Chez moi (Safari 2.0.2) c'est nickel :



Bon, bonne nouvelle !



Il est qque fois niais ce Safari, mais tt de même si on lui essplique
bien ... y a pas d'raison qu'il n'y arrive pas :-)
Avatar
Etienne SOBOLE
> Comme le dis Etienne, la page de mon exemple est en Latin-1... J'ai ajouté
une page servie en UTF-8 :
http://pgoiffon.free.fr/_temp/XHR_charset.html



Ben ca alors...
je tombe des nues !!!

Ca fonctionne.

C'est possible d'avoir le source PHP de la page qui est appelée, parce que
là, il y a un truc etrange.
C'est une page en UTF-8, ou bien c'est une page en ISO pour l'aquelle tu
retournes un texte encodé en UTF-8???

de toute façon il me semblait bien avoir fait les deux tests et que ca
revenait au meme chez moi...

A ben c'est cool. finalement il y a peut etre une solution mieux que
l'espèce de patch bidon que j'ai fait !!!

cool tout ca !
A+

Etienne
Avatar
Etienne SOBOLE
> Cad que c'est gratuit de 10.3 à 10.3.9 mais payant de 10.3.* en 10.4 ?



Heu je t'avoue que moi et le mac ca fait 1.5 !!!
mais en gros je crois que la version 1.3 est réservé a mac OSX 10.3
le 2.0 est pour mac OSX 10.4
et le prochain os (Panthere je crois) aura la version 3.0

http://pgoiffon.free.fr/_temp/XHR_charset.html


Chez moi (Safari 2.0.2) c'est nickel :


Bon, bonne nouvelle !



Chez moi aussi ca marche.
le code PHP PLEEEEEEEEEEEEEEASE !!!

qu'est ce que tu as ajoutté ou changé a ca ???

<?
header("Content-type:text/html; charset=utf-8");
echo utf8_encode('cinéma');
?>

merci
Etienne
Avatar
Pierre Goiffon
Etienne SOBOLE wrote:
http://pgoiffon.free.fr/_temp/XHR_charset.html



Ben ca alors...
je tombe des nues !!!

Ca fonctionne.



La page appelée en XHR n'a pourtant rien d'extraordinnaire ! Elle est en
PHP uniquement pour renvoyer un entête personnalisé (il y en a un par
défaut fixé par htaccess)

Le source :

----8<----8<----
<?php
header('Content-type: text/html; charset=UTF-8');
?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
</head>
<body>

<h1>Page servie en UTF-8</h1>

<p>é<br>
è</p>

</body>
</html>
----8<----8<----

Pas de utf8_encode car le fichier est enregistré en UTF-8 (idem pour le
fichier HTML XHR_charset.html).
Le prb viendrait-il de l'appel à cette fonction PHP ? (ce qui serait...
surprenant mais... en tout cas à investiguer !)
Avatar
Etienne SOBOLE
> La page appelée en XHR n'a pourtant rien d'extraordinnaire ! Elle est en
PHP uniquement pour renvoyer un entête personnalisé (il y en a un par
défaut fixé par htaccess)



ben je ne comprends pas.
ca ne marche toujours pas.

C'est quoi ton htaccess.
il renvoit quoi comme entete???

C'est ultra strange tout de meme...

bon ben je vais lassier mon patch qui consiste a des encoder lorsque je suis
sous safari !!!
A+

Etienne
Avatar
Pierre Goiffon
Etienne SOBOLE wrote:
La page appelée en XHR n'a pourtant rien d'extraordinnaire ! Elle est en
PHP uniquement pour renvoyer un entête personnalisé (il y en a un par
défaut fixé par htaccess)



ben je ne comprends pas.
ca ne marche toujours pas.



Vous voulez dire, sans le utf8_encode ?
Essayez de reprendre mon exemple sur votre serveur ??

C'est quoi ton htaccess.



Un simple ajout de charset : on renvoie utf-8 par défaut (AddCharset
UTF-8 .html).
1 2 3