Création
d'entreprise
Posez votre question Signaler

Encodage caractères AJAX [Résolu]

neointhematrix 74Messages postés 13 février 2007Date d'inscription - Dernière réponse le 8 mars 2012 à 10:07
Bonjour à tous,
Je suis confronté à un problème qui, je pense, ne doit pas être trop compliqué à résoudre et pourtant je passe vraiment à coté :).
Je fais une application web avec de l'ajax. Lorsque je met à jour des données dans mes divs, via ma BDD, les caractères accentués se retrouve remplacés par ces (maudits) losanges noirs à point d'interrogation. apparemment ma bdd est en interclassement : Latin1_swedish_ci. Je ne sais pas si je dois mettre un truc de spécial quant à l'encodage dans ma page html et si il faut mettre quelque chose de spécial dans mon fichier php ou j'éxécute ma requete.
Merci d'avance de vos réponses.
Lire la suite 

Encodage caractères AJAX »

16 réponses
Réponse
+6
moins plus
slt,
j'ai eu ce problème la semaine dernière.
j'ai juste mis cette ligne ci-dessous en haut dans mon fichier avant la requête et ça m'a résolu mon problème de caractères bizarroides..

essaye toujours ->

header('Content-Type: text/html; charset=ISO-8859-1');

++
Fred - 29 mars 2008 à 17:54
Il faut en effet encoder avec iso-8859-1, mais ce n'est pas suffisant. ça marche si le texte est déclaré sous forme de variable php, puis il faut utiliser htmlentities. Par exemple:
<?php $chaine = "ééé àà èèè"; ?> au début du document, puis entre les balises <body> et </body>:
<?php print htmlentities($chaine);?>
Et là plus de problème avec les accents. (je suppose qu'ici le script ajax et le script contenant le texte sont distincts).
Comme quoi Ajax c'est plus facile avec PHP.
votrewebfacile - 3 mars 2010 à 02:31
il y a plus simple selon moi :

echo utf8_encode($afficher);

qui va afficher la variable $afficher après l'avoir convertie en UTF8 :)
kressly- 22 juil. 2011 à 16:17
Ce n'est pas satisfaisant parce que moi j'ai essayé toutes vos méthodes mais je n'ai pas obtenu gain de cause
Ajouter un commentaire
Réponse
+4
moins plus
header('Content-Type: text/html; charset=ISO-8859-1');
à mettre en début de page

Brice
Ajouter un commentaire
Réponse
+1
moins plus
Bon, en fait tout ça n'a rien de compliqué:

Tout les transferts AJAX, autant montant que descendant, se font en utf-8. En effet, même si PHP n'est en UTF8 par default que de puis PHP 5.4, javascript lui travaille en utf-8, les données sont dont envoyées dans ce format.

Donc lorsque des données sont envoyées, il convient de decoder la chaine de caractères AVANT le traitement : $str=utf8_decode($str);

En suite, après le traitement, il faut encore prendre garde à encoder ses chaines de caractère : $str=htmlentities($str,ENT_QUOTES,"UTF-8");

Ne pas oublier d'envoyer les en-tetes avec la réponse afin de respecter les contraintes du protocole http.

Donc à l'envoi du resultat vers le client:
header('Content-Type: text/html;charset=utf-8');
echo $reponse;
Ajouter un commentaire
Réponse
+0
moins plus
Il y a des fonctions PHP pour l'encodage des données dans le format adéquates. Je me souviens avoir eu ce genre de problème avec de l'XML.

Fait des recherches sur les fonctions php, tu devrais trouver.

Désolé de ne pas pouvoir être plus précis, je n'ai pas mes sources à disposition pour chercher.
Ajouter un commentaire
Réponse
+0
moins plus
Malgré ça mon probleme persiste :'( !!!!!!!
J'ai le mm probleme que neointhematrix !!!!!!!!
Ajouter un commentaire
Réponse
+0
moins plus
Aidez moi SVP, je ne sait pas où insérer : header('Content-Type: text/html; charset=ISO-8859-1');

Merci beaucoup d'avance!!!
stc - 24 févr. 2009 à 16:52
Bahh j'ai le meme probleme moi je suis en utf-8 ,normalement un header se met avant toute ligne de code (donc en haut du fichier) !!!!
Vivent les tchat en ajax !!!
stc - 24 févr. 2009 à 16:58
Bon finalement j'ai résolu le probleme :
je met header('Content-Type:text/html; charset=utf-8');
au debut de ma page
puis je met header('Content-Type:text/html; charset=utf-8');
dans le fichier PHP que j'appelle grace a l'Ajax qui me permet d'afficher les messages du tchat
et plus de problemme d'accent de cedille etc ...
Si vous etes en ISO machin mettez iso machi,n ala place d'utf-8
Tchao
de passage - 27 oct. 2011 à 00:20
impécable;depuis une semaine ca m'a rendu dingue,
ben , il suffisait de mettre un header dans le fichier appelé par la fonction ajax en post ou get,

merci infifniement pour votre aide qui m'a rendu sevice...
Ajouter un commentaire
Réponse
+0
moins plus
Si le texte est en variable, je propose tout de même ma solution :

Petite fonction PHP :

function codeajax($e){
mb_convert_encoding($e, "UTF-8", "ISO-8859-1");
}

Et ensuite, déclarons la variable $texte contenant le texte accentué :
$texte = "ééèè àà"

Il suffit de l'appeler de cette manière :

echo codeajax($texte);

J'utilise personnellement cette méthode... Surtout pratique pour du texte en variable, donc la plupart du temps provenant d'une base MySQL ^^
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour à toutes et à tous,

Je me permet de remonter un peu le topic.

j'ai bien mon "header('Content-Type: text/html; charset=ISO-8859-1'); " en haut de page. Tous mes accents passent bien, mais lors d'un jeu d'essai, je m'aperçois que pour écrire "français" il m'écrit "français".

Je suppose donc que ce Content-Type ne prend pas en charge le c cédille.

J'ai beau chercher je ne trouve pas .. Si jamais vous avez une idée, ou source que je n'aurai pas trouvé, c'est gentil de me la faire parvenir.

Merci beaucoup à ceux qui pourrons me répondre !

Necro27

[EDIT] non en fait aucun accent ne passent. Je passe par le biais de l'ajax pour afficher mes informations via du code php. mais euh...je cherche..

Il faudrait donc mettre un encodage sur la page .js
Ajouter un commentaire
Réponse
+0
moins plus
up up upppp !!
Ajouter un commentaire
Réponse
+0
moins plus
Je reviens un peu sur ce sujet un peu passé déjà mais j'ai fait des tests après avoir eu le même problème....

En fait il faudrait vérifier l'encodage CLIENT/SERVEUR de la base et ensuite vérifier si les tables ont bien le bon jeu de caractères.

Ensuite vérifier, si on passe par $.ajax() par exemple, que l'encoding ne soit pas UTF-8 par défaut.

Bonne continuation à tous.

@++ sur la sphère :D
Ajouter un commentaire
Ce document intitulé « Encodage caractères AJAX » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?