json_encode utf8 json_last_error

Par kaloutch, il y a 8 ans


Bonjour,

Ce que je fais

quand j'envoie un message de ce type , "json_encode" ne renvoi rien !

http://puu.sh/xA8BQ/cf9958242f.png

Ce que je veux

je voudrais savoir comment faire pour afficher mon message ou supprimer si il y a ce type de caractere ( exposant ? )

10 réponses

betaWeb, il y a 8 ans

Salut,

Esssaye d'échapper les caractères spéciaux à la rigueur ?

kaloutch, il y a 8 ans

avec avec preg_replace ? c'est long à faire et pas fou je voudrais savoir avant s'il n'y a pas une autre méthode

betaWeb, il y a 8 ans

Peut-être avec un simple urlencode() ?

kaloutch, il y a 8 ans

alors sa fonction mais ça a cassé mon URL
http://puu.sh/xAe7f/ade2815bea.png

kaloutch, il y a 8 ans

non c'est mort , ca casse les points exclamation et le reste ..

betaWeb, il y a 8 ans

Je pense que tu fais les choses à l'envers : tu dois urlencode les parties de ton JSON que tu souhaites encoder PUIS json_encode le tout,. Tu me suis ? :)

kaloutch, il y a 8 ans

c'est exactement ce que je fais
`1. $message = htmlentities(urlencode($Publish['message']),ENT_QUOTES,'UTF-8');

  1. $Json['html']['string'] = $message;
  2. echo json_encode($Json);
  3. (ajax) $(data.html.selector).html(data.html.string);`
kaloutch, il y a 8 ans

ok avec decodeURIComponent ca passe mais il y a des petits bug . niveau securité c'est pas chaud d utilisé decodeURIComponent si l'utilisateur peut mettre nimportequoi ?

  1. (ajax) $(data.html.selector).html(decodeURIComponent(data.html.string));
kaloutch, il y a 8 ans

Finalement j'ai trouvé la solution ENFIN
json_encode etait vide car il y avais une erreur
J'ai recupéré cette erreur avec json_last_error()

function my_json_encode($data) { if( json_encode($data) === false ) { throw new Exception( json_last_error() ); } else{ return json_encode($data); } }

du coup c'etait a cause de l'encodage UTF-8
j'ai converti l'encodage avec iconv

$string = iconv('UTF-8', 'UTF-8//IGNORE', $string);

et la c'est bon plus d'erreur !