Services_JSON::utf162utf8()publicWP 1.0

Устарела с версии 5.3.0. Больше не поддерживается и может быть удалена. Используйте PHP native JSON extension.

convert a string from one UTF-16 char to one UTF-8 char

Normally should be handled by mb_convert_encoding, but provides a slower PHP-only method for installations that lack the multibye string extension.

Метод класса: Services_JSON{}

Внутренняя функция — эта функция рассчитана на использование самим ядром. Не рекомендуется использовать эту функцию в своем коде.

Хуков нет.

Возвращает

Строку. UTF-8 character

Использование

$Services_JSON = new Services_JSON();
$Services_JSON->utf162utf8( $utf16 );
$utf16(строка) (обязательный)
UTF-16 character

Список изменений

Устарела с 5.3.0 Use the PHP native JSON extension instead.

Код Services_JSON::utf162utf8() WP 6.6.2

function utf162utf8($utf16)
{
    _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' );

    // oh please oh please oh please oh please oh please
    if($this->_mb_convert_encoding) {
        return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
    }

    $bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);

    switch(true) {
        case ((0x7F & $bytes) == $bytes):
            // this case should never be reached, because we are in ASCII range
            // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
            return chr(0x7F & $bytes);

        case (0x07FF & $bytes) == $bytes:
            // return a 2-byte UTF-8 character
            // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
            return chr(0xC0 | (($bytes >> 6) & 0x1F))
                 . chr(0x80 | ($bytes & 0x3F));

        case (0xFFFF & $bytes) == $bytes:
            // return a 3-byte UTF-8 character
            // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
            return chr(0xE0 | (($bytes >> 12) & 0x0F))
                 . chr(0x80 | (($bytes >> 6) & 0x3F))
                 . chr(0x80 | ($bytes & 0x3F));
    }

    // ignoring UTF-32 for now, sorry
    return '';
}