Je souhaite convertir un objet JSON en chaîne. quand j'utilise json_encode
je reçois une chaîne mais tous avec des lettres hexadécimales. Je veux le convertir en UTF-8. En d'autres termes, je veux voir les personnages. Comment fait-on ça?Conversion d'un JSON en chaîne UTF-8
Répondre
Vous pouvez essayer passer une option à json_encode()
:
json_encode ($value, JSON_UNESCAPED_UNICODE);
L'option JSON_UNESCAPED_UNICODE
est uniquement disponible en version PHP 5.4.0 et versions ultérieures.
Merci.
que vous cherchez exactement pour la funcition json_decode
il peut convertir des chaînes JSON en UTF8
ici est un exemple de mot arabe
$re = json_encode('لغة عربية');
echo $re ;
$dd = json_decode($re);
echo $dd ;
die;
il sortie: "\u0644\u063a\u0629 \u0639\u0631\u0628\u064a\u0629"
لغة عربية
plus exemples ici http://php.net/manual/en/function.json-decode.php
J'utilisais json_encode
pour stocker des données telles que les caractères arabes dans les champs MySQL.
Il stockerait les caractères arabes comme HEX au sein de la base de données comme ceci:
u0644 u063a ...
ce qui est incorrect. Vous devez vous assurer que vous envelopper votre json_encode
avec mysql_escape_string()
.
Cela fera en sorte que les données sont mis en MySQL:
\ u0644 \ u063a ...
Ensuite, lorsque vous utilisez json_decode
, il convertit les chaînes de HEX en UTF -8 et est sortie correctement.
J'utilise cette fonction comme je l'ai mentionné ci-dessus mais les caractères sont en hexadécimal et non en UTF-8 – nisnis
Quelles options l'OP doit-il utiliser pour obtenir la sortie qu'il souhaite? – slashingweapon
Merci beaucoup ça fonctionne. – Androidbirt