Existe-t-il une fonction en PHP qui peut décoder des séquences d'échappement Unicode comme " \u00ed
" to " í
" et toutes les autres occurrences similaires?
J'ai trouvé une question similaire ici mais cela ne semble pas fonctionner.
Essaye ça:
$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $str);
Dans le cas où il s'agit de style C / C ++ / Java / Json basé sur UTF-16:
$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UTF-16BE');
}, $str);
\u
suivie de quatre chiffres hexadécimaux.la source
json_decode('"' . $text . '"')
json_decode('{"t":"\uD83D\uDE0A"}')
est 😊$text
peut inclure des guillemets doubles. Ainsi , une version révisée serait:json_decode('"'.str_replace('"', '\\"', $text).'"')
. Merci pour votre aide :-)PHP 7+
Depuis PHP 7, vous pouvez utiliser la syntaxe d'échappement de point de code Unicode pour ce faire.
echo "\u{00ed}";
sortiesí
.la source
la source
😍
Il s'agit d'une approche de masse pour remplacer UNICODE brut par du HTML. Je n'ai vu aucun autre endroit pour mettre cette solution, mais je suppose que d'autres ont eu ce problème.
Appliquez cette fonction str_replace au JSON RAW avant de faire autre chose.
Cela ne prendra pas autant de temps que vous le pensez, et cela remplacera TOUT UNICODE par HTML.
Bien sûr, cela peut être réduit si vous connaissez les types Unicode qui sont renvoyés dans le JSON.
Par exemple, mon code recevait beaucoup de flèches et de dingbat unicode. Ce sont entre 8448 et 11263. Donc mon code de production ressemble à:
Vous pouvez rechercher les blocs Unicode par type ici: http://unicode-table.com/en/ Si vous savez que vous traduisez l'arabe ou Telegu ou autre, vous pouvez simplement remplacer ces codes, pas tous les 65 000.
Vous pouvez appliquer ce même marteau à un encodage simple:
la source
Il existe également une solution:
http://www.welefen.com/php-unicode-to-utf8.html
la source
corriger les valeurs json, c'est ajouter \ avant u {xxx} à tous + ""
la source