%u → UTF-8
Столкнулся сегодня с задачей — надо сконвертировать пришедшую из JavaScript строку (в ней символы Юникода в виде «%uXXXX»)
echo json_decode(str_replace('%u', '\\u', json_encode($str_from_javascript)));Столкнулся сегодня с задачей — надо сконвертировать пришедшую из JavaScript строку (в ней символы Юникода в виде «%uXXXX»)
echo json_decode(str_replace('%u', '\\u', json_encode($str_from_javascript)));
Комментарии 10
Спасибо, схоронил.
$s = «\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432!»;
$s = preg_replace('/\\\u0([0-9a-fA-F]{3})/','&#x\1;',$s);
$s = html_entity_decode($s,
UTF8::unescape():
http://code.google.com/p/php5-utf8/source/ … 8.php#3643
Мой код с этой строкой выдаёт следующее: «%25+%25%75%30%30%32%35». Всё правильно, %XX не декодится (я не обещал).
UTF8::unescape($s) выдаёт результат (если речь у нас о полном декодировании) далёкий от JS, JS (в FF) выдаёт следующее: «%u0025%u0032%u0035+%u0025».
Спасибо большое! Долго искал решение. А Ваш способ самый простой.