52 votes

Un moyen de retourner PHP `json_encode` avec encoder UTF-8 et non Unicode ?

Un moyen de retourner PHP json_encode avec encoder UTF-8 et non Unicode ?

 $arr=array('a'=>'á');
echo json_encode($arr);

mb_internal_encoding('UTF-8'); et $arr=array_map('utf8_encode',$arr); ne le corrigent pas.

Résultat : {"a":"\u00e1"}

Résultat attendu : {"a":"á"}

33voto

Sheyla Fernandes Points 363

J'ai résolu mon problème en faisant ceci :

  • Le fichier .php est encodé en ANSI. Dans ce fichier se trouve la fonction permettant de créer le fichier .json.
  • J'utilise json_encode($array, JSON_UNESCAPED_UNICODE) pour encoder les données ;

Le résultat est un fichier .json codé en ANSI en UTF-8.

31voto

antoniom Points 1029

Cette fonction trouvée ici , fonctionne bien pour moi

 function jsonRemoveUnicodeSequences($struct) {
   return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct));
}

9voto

Lakin Mohapatra Points 928

Utilisez JSON_UNESCAPED_UNICODE dans json_encode() si votre version php >=5.4.

-4voto

Ashish Tikarye Points 784

il suffit d'utiliser ceci,

 utf8_encode($string);

vous devez remplacer votre $arr par $string .

Je pense que cela fonctionnera ... essayez ceci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X