Конвертировать специальные символы Юникода в UTF-8 - PullRequest
0 голосов
/ 22 ноября 2018

У меня проблема с преобразованием символов Юникода в utf-8.Вот мой код:

<?php 
    $unicode = '\u0411. \u0426\u044d\u0446\u044d\u0433\u0441\u04af\u0440\u044d\u043d';

    $utf8string = html_entity_decode(preg_replace("/U\+([0-9A-F]{4})/", "&#x\\1;", $unicode), ENT_NOQUOTES, 'UTF-8');

    echo $utf8string;
?>

И он дает мне ниже:

\u0411. \u0426\u044d\u0446\u044d\u0433\u0441\u04af\u0440\u044d\u043d

Что я сделал не так?любой совет ?

1 Ответ

0 голосов
/ 22 ноября 2018

Как минимум ваше регулярное выражение ищет прописные буквы U, в то время как все ваши escape-последовательности используют строчные буквы.

Но ваш сценарий преобразования переходит от символов Юникода, экранированных javascript, к сущностям HTMLвернуться к строке PHP.Это может быть более разумным решением (для этой строки):

$unicode = '\u0411. \u0426\u044d\u0446\u044d\u0433\u0441\u04af\u0440\u044d\u043d';
echo json_decode('"' . $unicode . '"');

Будьте осторожны, поскольку это может привести к сбою, если во входной строке содержатся символы новой строки или кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...