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