Bonjour a tous,
J'utilise un petit script AJAX pour afficher des données récupérées à la volée dans une autre page PHP. Or si le texte contient des accents, des problèmes apparaissent. Meme en trifouillant un peu les fonctions de gestion des encodages (PHP: utf8-encode / decode / mb_convert_encoding ou JS: escape / encodeURIComponent ...) je n'arrive pas à avoir un résultat identique sous Firefox et sous Safari. Je n'ai pas encore fait de tests sous IE.
Voici un lien vers ma page de test simplifiée au plus possible:
http://www.proou.com/testAjaxSafari.php
comme vous pourrez le voir j'ai testé 16 cas différents, j'en suis en effet arrivé au point ou on teste toutes les fonctions qui passent sous la main ... ici, aussi bien en JS qu'en PHP ...
Cela fait plusieurs jours que je traine ce problème, et si quelqu'un pouvait m'aider, je lui en serait très reconnaissant.
PS: Oui j'ai parcouru les FAQ sur l'encodage, et cela n'a pas résolu mon problème, qui est pour mémoire: Une différence des affichages sous safari ou sous firefox. Merci
Voici mes codes:
Index:
JS:
PHP appelé par Ajax:
Modifié par Yojimbow (08 Jan 2008 - 18:00)
J'utilise un petit script AJAX pour afficher des données récupérées à la volée dans une autre page PHP. Or si le texte contient des accents, des problèmes apparaissent. Meme en trifouillant un peu les fonctions de gestion des encodages (PHP: utf8-encode / decode / mb_convert_encoding ou JS: escape / encodeURIComponent ...) je n'arrive pas à avoir un résultat identique sous Firefox et sous Safari. Je n'ai pas encore fait de tests sous IE.
Voici un lien vers ma page de test simplifiée au plus possible:
http://www.proou.com/testAjaxSafari.php
comme vous pourrez le voir j'ai testé 16 cas différents, j'en suis en effet arrivé au point ou on teste toutes les fonctions qui passent sous la main ... ici, aussi bien en JS qu'en PHP ...
Cela fait plusieurs jours que je traine ce problème, et si quelqu'un pouvait m'aider, je lui en serait très reconnaissant.
PS: Oui j'ai parcouru les FAQ sur l'encodage, et cela n'a pas résolu mon problème, qui est pour mémoire: Une différence des affichages sous safari ou sous firefox. Merci
Voici mes codes:
Index:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="fonctions.js"></script>
</head>
<body>
Test des accents sous Safari et Firefox:<br>
texte à recevoir: éèàù°&ç"
<br><br>
<button onclick="javascript:JS_aff_decode()">affichage avec decode en PHP</button><br>
<button onclick="javascript:JS_aff_encode()">affichage avec encode en PHP</button><br>
<button onclick="javascript:JS_aff_convert()">affichage avec mb_convert_encoding en PHP</button><br>
<button onclick="javascript:JS_aff()">affichage sans fonction PHP</button><br>
<div id="aff"></div>
</body>
</html>
JS:
function JS_aff_decode(){
JS_requete_ajax('aff',"AJAX_aff_decode");
}
function JS_aff_encode(){
JS_requete_ajax('aff',"AJAX_aff_encode");
}
function JS_aff(){
JS_requete_ajax('aff',"AJAX_aff");
}
function JS_aff_convert(){
JS_requete_ajax('aff',"AJAX_aff_convert");
}
// échappe les caractères spéciaux
function escapeURI(La){
if(encodeURIComponent) {
return encodeURIComponent(La);
}
if(escape) {
return escape(La)
}
}
function JS_requete_ajax(zone,action_ajax){
// Test support XMLHTTPRequest
var XHR = null;
if(window.XMLHttpRequest) XHR = new XMLHttpRequest();
else if(window.ActiveXObject) XHR = new ActiveXObject('Microsoft.XMLHTTP');
else { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
//Fabriquation de l'URL
url = "code_ajax.php?action_ajax="+action_ajax+"&champ="+zone;
//Execution de la requete Ajax
XHR.open("GET",url, true);
XHR.onreadystatechange = function() {
if(XHR.readyState == 4 && XHR.responseText){
//Gestion réponse
rep="JS Unescape: "+unescape(XHR.responseText);
rep+="<br>JS Escape: "+escape(XHR.responseText);
rep+="<br>JS encodeURIComponent: "+encodeURIComponent(XHR.responseText);
rep+="<br>Pas de fct JS: "+XHR.responseText;
document.getElementById(zone).innerHTML = rep;
}
}
XHR.send(null);
return;
}
PHP appelé par Ajax:
//----------------- Code Php -------------------------
switch($_GET["action_ajax"]){
case "AJAX_aff_decode";
echo utf8_decode("éèàù°&ç"\"");
break;
case "AJAX_aff_encode";
echo utf8_encode("éèàù°&ç"\"");
break;
case "AJAX_aff";
echo "éèàù°&ç"\"";
break;
case "AJAX_aff_convert";
echo mb_convert_encoding("éèàù°&ç"\"", "UTF-8");
break;
}
Modifié par Yojimbow (08 Jan 2008 - 18:00)