Вопрос по unicode, text, regex, php – Как преобразовать текст в кодировку Unicode, например, с помощью php?
EDIT 2: Я хотел бы преобразовать английские слова в числа Unicode, используя php5, и затем выдается как \ u * * * *, где * * * * - номер Unicode.
В своем первоначальном вопросе я ошибочно подумал, что \ u является стандартом для кодирования юникода, когда на самом деле его просто экранируют в JavaScript (спасибо, Юкка К. Корпела, за то, что указал на это). Хотя я хотел сделать преобразование в PHP, преобразованный Unicode должен был быть использован в JavaScript.
Я попробовал ниже варианты, но не повезло. Ответ deceze сделал свое дело, хотя, большое спасибо!
THINGS I TRIED
Я читал, что могу использовать iconv для этого, но мне не повезло, и я не могу найти никаких примеров того, как это сделать.
Я также пробовал код Скотта Рейнена здесьКак получить номер кода для данного символа в строке utf-8? но я не могу заставить его работать. Когда я попробовал это, я включил скрипт в файл вместе с
<code>$str='test'; echo utf8_to_unicode($str); </code>
Это просто эхомtest
.
Я также прочитал, что могу использовать
<code>echo json_encode("test"); </code>
но опять я получаю толькоtest
выводится на экран.
Любая помощь приветствуется.
EDIT1: Actually I think they are called code units not code points.
json_encode
в значительной степени делает это для вас, но только для не-ASCII символов. Так что все, что вам нужно сделать, это конвертировать символы ASCII вручную. Вот функция, которая делает это на посимвольной основе:
if (!mb_check_encoding($str, 'UTF-8')) {
trigger_error('$str is not encoded in UTF-8, I cannot work like this');
return false;
}
return preg_replace_callback('/./u', function ($m) {
$ord = ord($m[0]);
if ($ord <= 127) {
return sprintf('\u%04x', $ord);
} else {
return trim(json_encode($m[0]), '"');
}
}, $str);
}