Page 1 sur 1

problème avec accent

Posté : 02 août 2011, 20:39
par ptitbonome
slt

j'ai un soucis avec mon script php.Lorsque je l'exécute j'ai à la place des accents d'autres caractères.

je suis sous mac et j'utilise Coda pour écrire mes scripts et ma base de données est gérée par phpmyAdmin.
<?php
mysql_connect ("localhost","root","");
mysql_select_db ("ichat");
mysql_query("SET NAMES 'utf8'") ;
 
 
if(isset($_POST['expediteur'])) 	$expediteur=$_POST['expediteur'];

 else	$expediteur='david';

 
if(isset($_POST['destinataire'])) 	$destinataire=$_POST['destinataire'];

 else	$destinataire='vaness';

$sql="SELECT id,expediteur,destinataire,message,status from chat WHERE destinataire='$expediteur' and expediteur='$destinataire' OR expediteur='$expediteur' AND destinataire='$destinataire'order by id " ;
$req = mysql_query ($sql) or die (mysql_error());
$myArray = array();
while(false !=($data = mysql_fetch_array($req)))
{ 
$myArray[] = array(
		 'id' => utf8_encode($data['id']) ,
		 'expediteur'=>utf8_encode($data['expediteur']) ,
		 'destinataire'=>utf8_encode($data['destinataire']),
		 'message'=> utf8_encode($data['message']),
		 'status'=> utf8_encode($data['status']));
  		}

echo json_encode ($myArray);
?>

et en réponse j'obtiens ca:
{"id":"95","expediteur":"david","destinataire":"vaness","message":"ouai ca va?","status":"0"},{"id":"99","expediteur":"david","destinataire":"vaness","message":"koi de neuf?","status":"0"},{"id":"100","expediteur":"vaness","destinataire":"david","message":"ben ca va . bientot les vacances donc je patiente. et toi?","status":"0"},{"id":"101","expediteur":"vaness","destinataire":"david","message":"Les lecteurs du Sun ont \u00c3\u00a9t\u00c3\u00a9 pr\u00c3\u00a9venus lundi soir, par courrier \u00c3\u00a9lectronique, que leurs ordinateurs pourraient avoir \u00c3\u00a9t\u00c3\u00a9 pirat\u00c3\u00a9s. \"Comme vous le savez dans doute, le 19 juillet, le site internet du Sun a \u00c3\u00a9t\u00c3\u00a9 vis\u00c3\u00a9 par une attaque criminelle organis\u00c3\u00a9e\", \u00c3\u00a9crit dans ce courriel Chris Duncan, charg\u00c3\u00a9 du service clients \u00c3\u00a0 News International.","status":"0"}
lorsque je regarde dans ma table message qui contient ces messages je n'ai aucun problème d'accents!

Si quelqu'un pouvait m'éclairer...

merci

Re: problème avec accent

Posté : 02 août 2011, 21:24
par Ryle
A vue de nez, je dirais que c'est parce que tu ré-encodes en utf8 (utf8_encode), des données qui sont déjà en utf8 quand tu les récupères de ta base de données (SET NAMES 'utf8') ...

Re: problème avec accent

Posté : 02 août 2011, 21:25
par Skw33d
Oui c'est normal, tu effectues un json_encode de ton tableau à la fin de ton script. Il remplace donc tous les accents / caractères spéciaux par leur équivalent hexadécimal.

Mais au juste quel est ton problème ? Pourquoi as tu besoin de les encodés en Json ? Est ce dans le but de faire interagir Javascript et PHP pour une application Ajax ou encore pour une API proposé par ton application ?

Re: problème avec accent

Posté : 02 août 2011, 22:32
par ptitbonome
Oui c'est normal, tu effectues un json_encode de ton tableau à la fin de ton script. Il remplace donc tous les accents / caractères spéciaux par leur équivalent hexadécimal.

Mais au juste quel est ton problème ? Pourquoi as tu besoin de les encodés en Json ? Est ce dans le but de faire interagir Javascript et PHP pour une application Ajax ou encore pour une API proposé par ton application ?
slt

oui en effet c'est pour une application. J'ai préféré le Json plutot que le xml
Il me semble avoir déjà eu des accents bien retranscris même en Json.

Re: problème avec accent

Posté : 03 août 2011, 00:22
par Skw33d
Ben pour ma part pour les fois où j'ai travaillé avec le Json, et je travaille d'ailleurs actuellement avec, j'ai toujours eu les accents convertis de cette manière. Mais je n'avais pas remarqué que tes données étaient deux fois convertis dans le résultat Json !
Donc ton problème est bien :
A vue de nez, je dirais que c'est parce que tu ré-encodes en utf8 (utf8_encode), des données qui sont déjà en utf8 quand tu les récupères de ta base de données (SET NAMES 'utf8') ...
Mais en tout cas moi j'ai jamais vu de caractère accentué dans une chaine Json, d'ailleurs tente un json_decode sur un é tu obtiendras un résultat null.