2010-12-10 27 views
4

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

4

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.

+1

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

+0

Quelles options l'OP doit-il utiliser pour obtenir la sortie qu'il souhaite? – slashingweapon

+0

Merci beaucoup ça fonctionne. – Androidbirt

1

Vous ne pouvez pas, in PHP. De plus, les chaînes seront toujours les mêmes une fois que vous les aurez décodées.

+0

oui je sais que mais je veux montrer les caractères sur l'écran pour l'utilisateur – nisnis

+0

Alors quoi? Tu ne peux toujours pas. –

1

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

+0

cela ne fonctionne pas – nisnis

+0

pourriez-vous s'il vous plaît assurez-vous que vos données json est valide, vérifiez json.org, ou le partager avec nous – tawfekov

+0

J'ai utilisé votre code – nisnis

7

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.