Rechercher : dans
Par :

Php/ajax encodage partiel

Dernière réponse le 16 jui 2009 à 15:02:21 Brachior, le 30 mai 2008 à 15:09:43 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « php/ajax encodage partiel » dans :
Ajax - Javascript - Upload multiple VoirIntroduction Création de l'uploader Script côté serveur (upload.php) Téléchargement des Fichiers Multiples Génériques en Ajax Introduction AJAX Upload vous permet de facilement télécharger plusieurs fichiers sans rafraîchir la page et...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

Brachior, le 30 mai 2008 à 16:36:04

Up !

personne ? =S

Répondre à Brachior

2

Brachior, le 30 mai 2008 à 17:54:49

Re up!!
toujours personne ? =/

Répondre à Brachior

3

Brachior, le 30 mai 2008 à 18:46:31

Re re up !! ( j'le remonte toutes les heures sait on jms xD lol ^^ )
j'ai vraiment besoin d'un p'tit coupe d'pouces s'iou plait =S
a vot' bon coeur m'sieu dame ... c'est pour l'artiste !! Oo

Répondre à Brachior

4

Brachior, le 30 mai 2008 à 19:04:36

J'donne un exemple concret ( pour ceux qui tomberont par hasard ici Oo )
voila les resultats ^^

message a afficher :
' " / \ & é è à @ ™ (tm) € (euro)

mysql_real_escape_string(htmlspecialchars(htmlentities($_POST['message'])))
' " / \ & é è à @ & #8482; (tm) ¤ (euro)

( j'ai mis un espace entre le & et #8482; car ccm.net le traduit en ™ lol ^^ )

mysql_real_escape_string(htmlspecialchars($_POST['message']))
' " / \ & ? ? ? @ ™ (tm) ? (euro)

Répondre à Brachior

5

Brachior, le 30 mai 2008 à 20:00:49

C'est l'h de l'up Oo lol

bn dc tjs personne ? :snif: :'(

Répondre à Brachior

6

Brachior, le 30 mai 2008 à 22:27:00
  • +1

Oh Oh Oh ...

on est jms mieux servie que part soit meme ^^

j'post tt d'meme ma reponse pr ceux que ca interesse :)

suffit de forcer la meta en mettant :

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


avant chaque affichage ;)

voila ^^ merci a moi
de rien de rien ..
si si j'insiste :)

bn ok j'arrete lol ^^ bye all ^^

Répondre à Brachior

7

PhP, le 1 jun 2008 à 22:48:47

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 ...

Répondre à PhP

8

Brachior, le 1 jun 2008 à 23:51:33

Meme le '€' ? ^^
normalement il n'est pas ds iso-8859-1 mais ds le iso-8859-15 ^^

Répondre à Brachior

12

 deer, le 16 jui 2009 à 15:02:21

this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1"); 


je confirme ca marche aussi pour moi

merci

Répondre à deer

9

PhP, le 2 jun 2008 à 00:37:32

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 ...

Répondre à PhP

10

poumon, le 21 jun 2008 à 20:00:17
  • +2

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.

Répondre à poumon

11

phima, le 2 oct 2008 à 11:14:10

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

Répondre à phima
Collection CommentÇaMarche.net