Вопрос по unicode, text, regex, php – Как преобразовать текст в кодировку Unicode, например, с помощью php?

2

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.

Пояснение: я пытаюсь усложнить чтение ответов из кода javascript. TryHarder
Спасибо за ваш ответ. Первоначально я сохранял кодовые точки в mysql, но вместо этого я решил сохранить их как обычный текст. Текст будет преобразован в кодовые точки Юникода в php, добавлен в массив и затем в конечном итоге использован в коде javascript. Я не хочу делать преобразование в javascript. Одна из причин, по которой я использую юникод, состоит в том, чтобы затруднить чтение любопытных глаз. TryHarder
Вы можете посмотреть наstackoverflow.com/questions/395832/… Daan
Благодарю. Я посмотрел на это, но посмотрю снова. TryHarder
0054 - это номер Unicode, также называемый кодовой точкой Unicode и условно записанный с помощью & # x201C; U + & # x201D; когда используется в тексте. Префикс его с & # x201C; \ u & # x201D; создает что-то, что не используется в обычном языке и действует как escape-нотация в литералах JavaScript. Совершенно не ясно, что вы имеете в виду здесь и почему вы будете это делать. Если у вас уже есть персонаж, зачем вам создавать для него escape-код JavaScript и где бы вы его использовали? Jukka K. Korpela

Ваш Ответ

1   ответ
10

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);
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededforums.adobe.com/message/5721002#5721002
Error: User Rate Limit Exceeded TryHarder
Error: User Rate Limit Exceeded

Похожие вопросы