Encodage caractères AJAX

Résolu
neointhematrix Messages postés 74 Statut Membre -  
 renoi -
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.
A voir également:

11 réponses

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

++
10
Fred
 
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.
0
votrewebfacile
 
il y a plus simple selon moi :

echo utf8_encode($afficher);

qui va afficher la variable $afficher après l'avoir convertie en UTF8 :)
0
kressly Messages postés 34 Statut Membre
 
Ce n'est pas satisfaisant parce que moi j'ai essayé toutes vos méthodes mais je n'ai pas obtenu gain de cause
0
vidda
 
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;
6
Brice
 
header('Content-Type: text/html; charset=ISO-8859-1');
à mettre en début de page

Brice
5
eracius Messages postés 12 Statut Membre
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vins974
 
Malgré ça mon probleme persiste :'( !!!!!!!
J'ai le mm probleme que neointhematrix !!!!!!!!
0
974_Vin's_974 Messages postés 554 Statut Membre 102
 
Aidez moi SVP, je ne sait pas où insérer : header('Content-Type: text/html; charset=ISO-8859-1');

Merci beaucoup d'avance!!!
0
stc
 
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 !!!
0
stc > stc
 
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
0
de passage
 
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...
0
WibiMaster Messages postés 31 Statut Membre 1
 
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 ^^
0
necro27 Messages postés 175 Statut Membre 8
 
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
0
mimonetta
 
up up upppp !!
0
xloadx Messages postés 31 Statut Membre 7
 
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
0
renoi
 
merci...
le header a bien marché. ;)
0