J'ai un script PHP qui traite une grande variété de langages. Malheureusement, chaque fois que j'essaie d'utiliser json_encode
, toute sortie Unicode est convertie en entités hexadécimales. Est-ce le comportement attendu? Existe-t-il un moyen de convertir la sortie en caractères UTF-8?
Voici un exemple de ce que je vois:
CONTRIBUTION
echo $text;
PRODUCTION
База данни грешка.
CONTRIBUTION
json_encode($text);
PRODUCTION
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
JSON_UNESCAPED_UNICODE est disponible sur PHP version 5.4 ou ultérieure.
Le code suivant est pour la version 5.3.
ACTUALISÉ
html_entity_decode
est un peu plus efficace quepack
+mb_convert_encoding
.(*SKIP)(*FAIL)
saute les barres obliques inverses et les caractères spécifiés par desJSON_HEX_*
indicateurs.la source
\\
. La nouvelle version obtient\\
une priorité plus élevée que\u
.Vous aimez définir un jeu de caractères et unicode sans échappement
la source
Une solution consiste à encoder d'abord les données, puis à les décoder dans le même fichier:
la source
Voici ma solution combinée pour différentes versions de PHP.
Dans mon entreprise, nous travaillons avec différents serveurs avec différentes versions de PHP, j'ai donc dû trouver une solution qui fonctionne pour tous.
Les crédits doivent aller à Marco Gasi & abu . La solution pour PHP> = 5.4 est fournie dans la documentation json_encode.
la source
La fonction raw_json_encode () ci - dessus ne m'a pas résolu le problème (pour une raison quelconque, la fonction de rappel a soulevé une erreur sur mon serveur PHP 5.2.5).
Mais cette autre solution a fonctionné.
https://www.experts-exchange.com/questions/28628085/json-encode-fails-with-special-characters.html
Les crédits devraient aller à Marco Gasi . J'appelle juste sa fonction au lieu d'appeler json_encode ():
la source
la source
Depuis que vous avez demandé:
Une autre solution consiste à utiliser utf8_encode .
Cela encodera votre chaîne en
UTF-8
.par exemple
la source
le
json_encode()
fonctionne uniquement avec des données encodées en UTF-8.peut-être pouvez-vous obtenir une réponse pour le convertir ici: cyrillic-characters-in-phps-json-encode
la source