DavidR76 Posté 8 Novembre 2006 Posté 8 Novembre 2006 Bonjour, Après avoir cherché sur le web (et sur ce forum) je vous expose mon problème : J'utilise xhr dans un formulaire pour mettre à jour des champs de ce formulaire via MYSQL 4.1.9-max. Le charset de ma page html est en iso-8859-1 L'interclassement de ma base, de ma table et de mes champs est latin1_general_ci. J'ai également setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1'); de défini, et overrideMimeType('text/html; charset=ISO-8859-1'); Mon fichier php appelé par xhr ne contient pas de header("Content-type: text/html; charset=iso-8859-1"); puisque j'utilise setRequestHeader et overrideMimeType (mais peut etre que je me trompe). Et malgré tout celà, le texte inséré dans ma table mysql contient des caractères genre é au lieu d'un é. Je comprends plus rien merci de me venir en aide. Je joints l'entete HTTP et mon code : Date: Wed, 08 Nov 2006 08:18:12 GMT Server: Apache/1.3.33 (Win32) PHP/4.3.10 X-Powered-By: PHP/4.3.10 Keep-Alive: timeout=15, max=96 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 Code contenu dans mon fichier html : var xhr_mysql = null; if(window.XMLHttpRequest) // Firefox xhr_mysql = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_mysql = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } xhr_mysql.open("POST", "../fonctions/valid_modele_request.php", true); xhr_mysql.overrideMimeType('text/html; charset=ISO-8859-1'); xhr_mysql.onreadystatechange = function() { if(xhr_mysql.readyState == 4) { var message = xhr_object.getAllResponseHeaders(); document.modele.Corps.value = message alert('Votre modèle a bien été enregistré.'); //window.location.href = "../index.php"; } } xhr_mysql.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1'); var data = "id_modif="+id_modif+"&id_operateur="+id_operateur+"&id_essai="+id_essai+"&nom="+nom+"&sujet="+sujet+"&Chaine_Pour="+Chaine_Pour+"&Chaine_Copie="+Chaine_Copie+"&corps="+corps; xhr_mysql.send(data);
dièse Posté 8 Novembre 2006 Posté 8 Novembre 2006 Bonjour, Déjà tu devrais rajouter le header qui renvoit le type mime pour tes pages PHP. Mais ça n'est pas ça qui peut poser problème lors de l'insertion dans ta base... Vérifie peut-être le format d'encodage de tes fichiers par ton éditeur de texte
DavidR76 Posté 8 Novembre 2006 Auteur Posté 8 Novembre 2006 Merci pour ta réponse rapide, Le format d'encodage des fichiers est ANSI (Windows) donc c'est bon (j'avais déjà vérifié). D'autres suggestions ?
armenfrast Posté 27 Novembre 2006 Posté 27 Novembre 2006 Bon sang, j'ai exactement le même problème. Si tu as trouvé une solution depuis lors peux tu l'indiquer Merci
Fabrice11 Posté 21 Décembre 2006 Posté 21 Décembre 2006 Bonjour, j'ai eu le même problème avec une aplication et j'ai trouvé une solution. En effet lorsque le javascript appelle un fichier PHP en Ajax, la sortie est mal encodé. La solution est de convertir cette sortie. Exemple de fichier PHP appelé par XmlHttpRequest: /*BUFFERISATION DE SORTIE:Je buffeurise la sortie pour éviter le problème d'encodage*/ob_start(); /* SCRIPT EN PHP ....... *//*ON STOPPE LA BUFFERISATION DE SORTIE*/$buffer = ob_get_clean();/*ON CONVERTIE LA SORTIE*/$buffer = mb_convert_encoding($buffer,"UTF-8", "auto");/*ON AFFICHE LA SORTIE*/echo $buffer; Voilà, bonne journée
ZeBrian Posté 2 Janvier 2007 Posté 2 Janvier 2007 (modifié) Une autre solution possible à mon avis : la fonction utf8_decode Il suffirait probablement de l'appliquer aux données juste avant l'enregistrement dans la base de données Modifié 2 Janvier 2007 par ZeBrian
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant