Aller au contenu

Sujets conseillés

Posté

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);

Posté

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 :unsure:

Posté

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 ? :(

  • 3 semaines plus tard...
  • 4 semaines plus tard...
Posté

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

  • 2 semaines plus tard...
Posté (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é par ZeBrian

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...