Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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
Etienne SOBOLE wrote:
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



Auriez-vous un exemple en ligne : la page contenant "cinéma", ainsi que
la page contenant la requète XHR ?
Je soupçonne que ce soit cette dernière page qui pose prb (on affiche de
l'UTF-8 au sein d'une page en ISO Latin-1)
Au passage votre utf8_encode ne serait pas nécessaire si votre fichier
php était enregistré en UTF-8 directement.
Avatar
Etienne SOBOLE
Salut.

ouai je t'ai fait un exemple.
www.webshaker.net/cinema.php

je t'ai tout converti en UTF-8, ce qui ne change rien, mais ca je le savais
deja.

En fait, il semble que safari 1.3 (je parle pas des safari récent !!!)
convertisse automatiquement ce qui arrive d'une requete AJAX en UTF-8, mais
si c'est deja de l'UTF-8, ben ca le reconverti une deuxieme fois...

voila.
a+

Merci de ton aide.
Pour le moment j'ai patché en envoyant de l'ISO si le USER agent est safari
1.3, mais j'ai pas de safari 2.0 pour tester !!!

"Pierre Goiffon" a écrit dans le message de news:
46c54d7f$0$431$
Etienne SOBOLE wrote:
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



Auriez-vous un exemple en ligne : la page contenant "cinéma", ainsi que la
page contenant la requète XHR ?
Je soupçonne que ce soit cette dernière page qui pose prb (on affiche de
l'UTF-8 au sein d'une page en ISO Latin-1)
Au passage votre utf8_encode ne serait pas nécessaire si votre fichier php
était enregistré en UTF-8 directement.


Avatar
ASM
En réponse à Etienne SOBOLE qui écrivit, en date du : 18/08/07 10:15,
le message suivant :
Salut.

ouai je t'ai fait un exemple.
www.webshaker.net/cinema.php

je t'ai tout converti en UTF-8, ce qui ne change rien, mais ca je le savais
deja.

En fait, il semble que safari 1.3 (je parle pas des safari récent !!!)
convertisse automatiquement ce qui arrive d'une requete AJAX en UTF-8, mais
si c'est deja de l'UTF-8, ben ca le reconverti une deuxieme fois...



He oui ... (j'en avais parlé y a des lustres sur fcl.javascript et/ou
...auteurs)

voir si cette ficèle fonctionne :
<http://stephane.moriaux.perso.orange.fr/truc/HttpRequest/v_2/?utf8>

Ficèle qui ne semble rien donner?
car là ça fonctionne avec mon autre soluce :
- les trucs à inclure sont en utf-8
- on stipule en 1ière ligne de chaque truc :
<?xml version="1.0" encoding="utf-8" ?>
(que l'on peut peut-être ne faire écrire que pour Safari ?)


Pour le moment j'ai patché en envoyant de l'ISO si le USER agent est safari
1.3,



Ha ?

mais j'ai pas de safari 2.0 pour tester !!!



He ben les accents y sont aussi KKbouillés !

essayer :

if(xhr_object.readyState == 4)
document.getElementById('field').value=unescape(xhr_object.responseText);

atouzazars ? ?


Le curieux est que
http://www.webshaker.net/ask_cinema.php
nous donne bien 'cinéma' avec Safari.

.
Avatar
Etienne SOBOLE
> He oui ... (j'en avais parlé y a des lustres sur fcl.javascript et/ou
...auteurs)



Ah ok
sorry.

Ficèle qui ne semble rien donner?



Nan j'ai assayer pendant des heures et finalement pour le cas de safari 1.3,
ben je décode l'utf-8 en ISO.
et ca marche. enfin c'est un patch plutot qu'autre chose mais bon.

Le curieux est que
http://www.webshaker.net/ask_cinema.php
nous donne bien 'cinéma' avec Safari.



Oui, Safari n'a pas de problème avec l'UTF-8 dans le cas d'une page WEB.
Ce qu'il n'arrive pas à comprendre c'est quel est le charset de retour d'une
requete AJAX!

Enfin bon.
c'est pas la mort. ca marchouille avec safari 1.3.
avec le 3.0 il n'y a aucun soucis.

J'arrive juste apas trop a savoir a quel moment, safari a été debuggé !!!
Mas version a moi (ma 1.3) est la
Safari/312.6
Ce qui ne veut pas dire que c'est la version 3, c'est bien la version 1.3
mais c'est la build 312.6

pour info voila la liste de tous les user agent safari
http://www.useragentstring.com/pages/Safari/

je cherche un safari 2.0 !!!
merci
Avatar
ASM
En réponse à Etienne SOBOLE qui écrivit, en date du : 19/08/07 17:42,
le message suivant :

pour info voila la liste de tous les user agent safari
http://www.useragentstring.com/pages/Safari/



Boudiou ! ça en fait une liste là dis donc !

je cherche un safari 2.0 !!!



Il faut savoir que les MaJ de Safari se font usuellement de manière
transparente quand on met à jour le Système. Il ne doit pas être
possible de faire fonctionner une version 2 sous OS X 10.2 j'imagine.

Perso j'ai : Version 2.0.2 (416.12)
(système Mac OS X 10.4.3 (8F46))

Sinon la 2.1 :
<http://www.apple.com/support/downloads/safariupdate201.html>

tu peux essayer :
<http://search.info.apple.com/?search=Go&lr=lang_fr&kword=&type=kbdload&newstype=&q=safari>

ainsi que :
<http://docs.info.apple.com/article.html?artnum6713>
<http://docs.info.apple.com/article.html?artnumu421>
<http://docs.info.apple.com/article.html?artnum%633>
<http://docs.info.apple.com/article.html?artnum%633>
rt ...
<http://search.info.apple.com/?search=Go&lr=lang_fr&kword=&type=kbdload&newstype=&q=Os%20x%2010.4>

Je n'arrive pas (plus ?!) à retrouver la liste de tous les combo updates
des systèmes (de ttes les versions) ... :-(
Avatar
Etienne SOBOLE
> Perso j'ai : Version 2.0.2 (416.12)
(système Mac OS X 10.4.3 (8F46))



cool donc tu me confirmes que sur la version 2.0.2
l'encodage utf-8 ne marche pas non plus !

tout du moins dans l'exemple que j'ai donnée?

www.webshaker.net/cinema.php

Tu peux me filer ton useragent exact stp ?

merci
Etienne
Avatar
ASM
En réponse à Etienne SOBOLE qui écrivit, en date du : 19/08/07 21:26,
le message suivant :
Perso j'ai : Version 2.0.2 (416.12)
(système Mac OS X 10.4.3 (8F46))



cool donc tu me confirmes que sur la version 2.0.2
l'encodage utf-8 ne marche pas non plus !



pas s'il n'a pas le charset xml

P. Goiffon te dirait qu'il suffit qu'il soit dans le header (via php ?)
Revoir son exemple :
http://pgoiffon.free.fr/_temp/XHR_charset.html
dont l'en-tête du truc requesté :
<http://groups.google.com/group/fr.comp.infosystemes.www.auteurs/msg/63064d58ff9184ef?rnum=1>

et le fil :
<http://groups.google.com/group/fr.comp.lang.javascript/browse_frm/thread/355398c34c9c2aaa/0545ef9dc91ccdef?#0545ef9dc91ccdef>
en particulier :
<http://groups.google.com/group/fr.comp.lang.javascript/tree/browse_frm/thread/355398c34c9c2aaa/229cb6964b90ac03?rnum&_done=%2Fgroup%2Ffr.comp.lang.javascript%2Fbrowse_frm%2Fthread%2F355398c34c9c2aaa%2F0545ef9dc91ccdef%3F#doc_1f36bb6fc0c3afd5>
<http://groups.google.com/group/fr.comp.lang.javascript/tree/browse_frm/thread/355398c34c9c2aaa/229cb6964b90ac03?rnum&_done=%2Fgroup%2Ffr.comp.lang.javascript%2Fbrowse_frm%2Fthread%2F355398c34c9c2aaa%2F0545ef9dc91ccdef%3F#doc_5518d88abfb47849>

tout du moins dans l'exemple que j'ai donnée?

www.webshaker.net/cinema.php



Oui, oui, avec cet exemple

Tu peux me filer ton useragent exact stp ?



Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr) AppleWebKit/416.11 (KHTML,
like Gecko) Safari/416.12
Avatar
Pierre Goiffon
ASM wrote:
cool donc tu me confirmes que sur la version 2.0.2
l'encodage utf-8 ne marche pas non plus !



pas s'il n'a pas le charset xml

P. Goiffon te dirait qu'il suffit qu'il soit dans le header (via php ?)
Revoir son exemple :
http://pgoiffon.free.fr/_temp/XHR_charset.html


(...)
et le fil :
<http://groups.google.com/group/fr.comp.lang.javascript/browse_frm/thread/355398c34c9c2aaa/0545ef9dc91ccdef?#0545ef9dc91ccdef>



[exemple de Etienne Sobole sur http://www.webshaker.net/cinema.php]

Ici sur http://www.webshaker.net/cinema.php comme sur
http://www.webshaker.net/ask_cinema.php (la page appelée par XHR) on a
bien le bon entête renvoyé par le serveur :
Content-Type: text/html; charset=utf-8
Et la page ask_ciname.php est bien en UTF-8...

Il faudrait vérifier avec quel codage Safari lit la page cinema.php
(usuellement on a un menu du codage, et le navigateur permet de
sélectionner soit-même celui désiré... sous Firefox dans View /
Character Encoding, sous IE dans Affichage / Codage, je suppose qu'il y
a l'équivalent dans Safari ?)
A voir aussi s'il n'y a pas lieu de changer le content-type de
ask_cinema.php, en passant de text/html à text/plain ?

Vous parlez tous les 2 de plusieurs versions, est-ce que les 1.x ne sont
pas obsolètes ? (je ne sais pas qui pourrait se permettre de supporter
parfaitement Netscape 2 aujourd'hui)
Avatar
ASM
En réponse à Pierre Goiffon qui écrivit, en date du : 20/08/07 11:22,
le message suivant :
ASM wrote:
cool donc tu me confirmes que sur la version 2.0.2
l'encodage utf-8 ne marche pas non plus !



pas s'il n'a pas le charset xml



[exemple de Etienne Sobole sur http://www.webshaker.net/cinema.php]

Ici sur http://www.webshaker.net/cinema.php comme sur
http://www.webshaker.net/ask_cinema.php (la page appelée par XHR) on a
bien le bon entête renvoyé par le serveur :
Content-Type: text/html; charset=utf-8
Et la page ask_ciname.php est bien en UTF-8...



En effet.

Cependant je vois que Etienne utilise une fonction de requête un peu
condensée et qu'il n'a pas, par exemple :
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml');
}
(sans que je sache si ceci peut vraiment impressionner les brouteurs)
De même, il n'utilise pas le :
http_request.onreadystatechange = function() { blabla };

Avec Safari j'ai un autre problème pour les pages d'Etienne :
"une erreur est survenue lors de l'ouverture de la page"

Après interrogation voici :

(cite)
Safari ne parvient pas à ouvrir la page.
Trop de redirections sont survenues en tentant d’ouvrir
“http://www.webshaker.net/errors/e404.htm”. Ceci peut se produire
lorsque vous ouvrez une page qui est redirigée vers une autre page
laquelle se redirige à son tour vers la page originale.
(/cite)

Problème de serveur ?

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

Une fois choisi : utf-8
- ça ne change rien au résultat de la requête (kkbouillée)
- chacune des pages s'affiche correctement (avec mention d'erreur)

Je vois en outre que l'input n'est pas dans un form, essayer avec :
<form method="get" accept-charset="utf-8">
et autres charsets ?

Essayer de même pour le JS :
<script type="text/javascript" charset="iso-8859-1">
et autres charsets ...

Vous parlez tous les 2 de plusieurs versions, est-ce que les 1.x ne sont
pas obsolètes ? (je ne sais pas qui pourrait se permettre de supporter
parfaitement Netscape 2 aujourd'hui)



Heu ... Safari 1.3 n'est qd même pas *aussi* obsolète, même si ...

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)

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é ?

.
Avatar
Etienne SOBOLE
Bon on s'enbrouille la !!!

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

Effectivement comme safari convertit à tous les coup en UTF-8, si on appelle
une page ISO, ca fonctionne (ce qui soit dit en passant est limite normal)

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.

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 !!!

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

merci
Etienne
1 2 3