|
|
|
|
Bonjour a tous, mon probleme est assez énervant =/ et j'ai beau sillioner les forum ... je n'ai toujours pas reussi a resoudre mon probleme :( alors voila, j'ai fait un miniChat (en ajax) sur mon site. il fonctionne tres bien mis a part un point ... -> l'encodage >.> je m'explique : pour contrer les eventuelles injections SQL j'utilise les fonctions suivantes: - mysql_real_escape_string() - htmlspecialchars() puis pour encoder les accents j'utilise : - htmlentities() a la sortie j'utilise : - html_entity_decode() avec comme argument 'ENT_NOQUOTES' les accents passent bien, et les \ qui protegent les quotes sont enlevés mais reste un probleme, certains caractères speciaux ne passent tout de meme pas =/ ( exemple : € , ™ , ... ) je sais que le xml généré par ajax est en utf-8 mais normalement le 'htmlentities' rectifie ce probleme ( sauf pour € car le 'decode' passe en iso-8859-1 alors que l'€ est dans l'iso-8859-15 ) mais meme ™ ne passe pas car il lui donne un code ascii invalide >.> j'ai d'ailleurs aussi remarqué que si j'enlève le 'htmlentities' alors le ™ s'affiche mais plu les accents =S si quelqu'un a une idée pour resoudre mon probleme ... je lui en serais tres reconaissant ^^ PS : voici les bouts de mon code ^^ en entrée : $message= mysql_real_escape_string(htmlspecialchars(htmlentities($_POST['message']))); en sortie : $message= strtolower(html_entity_decode($donnees['ChatMsg'],ENT_NOQUOTES)); sachant que ma db est en latin1_general_ci
Configuration: Windows XP Firefox 2.0.0.14
up !
personne ? =S
|
Bsr
Hum j'ai eu le même problème : j'ai essayé ta solution mais rien à faire avec ISO-8859-15 ca ne fonctionne pas Avec ISO-8859-1 ça fonctionne sous FF mais pas sous IE Finalement j'ai supprimé le header de ma page appellée et dans la requête AJAX je passe directement this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1"); Et pour le moment ça fonctionne sur IE et FF ouf ! PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
|
Ben vi même le € ! par contre c'est vrai j'ai bidouillé un peu pour le ... &
PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
Salut
Moi je mets ce header : <?php
header('Content-Type: text/html; charset=ISO-8859-1');
?>
au début de toutes mes pages .php qui seront appelées avec Ajax. |
utilise encodeURIComponent dans ton encodate de tes posts à la place de escape et tout sera résolu (et tu pourras envoyer de zolis posts en utf-8 |