Services_JSON::utf82utf16()publicWP 1.0

Deprecated from version 5.3.0. It is no longer supported and can be removed in future releases. Use PHP native JSON extension instead.

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

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

Method of the class: Services_JSON{}

Internal function — this function is designed to be used by the kernel itself. It is not recommended to use this function in your code.

No Hooks.

Return

String. UTF-16 character

Usage

$Services_JSON = new Services_JSON();
$Services_JSON->utf82utf16( $utf8 );
$utf8(string) (required)
UTF-8 character

Changelog

Deprecated since 5.3.0 Use the PHP native JSON extension instead.

Services_JSON::utf82utf16() code WP 6.5.2

function utf82utf16($utf8)
{
    _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($utf8, 'UTF-16', 'UTF-8');
    }

    switch($this->strlen8($utf8)) {
        case 1:
            // 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 $utf8;

        case 2:
            // return a UTF-16 character from a 2-byte UTF-8 char
            // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
            return chr(0x07 & (ord($utf8[0]) >> 2))
                 . chr((0xC0 & (ord($utf8[0]) << 6))
                     | (0x3F & ord($utf8[1])));

        case 3:
            // return a UTF-16 character from a 3-byte UTF-8 char
            // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
            return chr((0xF0 & (ord($utf8[0]) << 4))
                     | (0x0F & (ord($utf8[1]) >> 2)))
                 . chr((0xC0 & (ord($utf8[1]) << 6))
                     | (0x7F & ord($utf8[2])));
    }

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