Gpf_Rpc_Json::utf82utf16 PHP Метод

utf82utf16() публичный Метод

Normally should be handled by mb_convert_encoding, but provides a slower PHP-only method for installations that lack the multibye string extension.
public utf82utf16 ( string $utf8 ) : string
$utf8 string UTF-8 character
Результат string UTF-16 character
        function utf82utf16($utf8)
        {
            // oh please oh please oh please oh please oh please
            if (Gpf_Php::isFunctionEnabled('mb_convert_encoding')) {
                return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
            }
            switch (strlen($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(0x7 & 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 | 0xf & ord($utf8[1]) >> 2) . chr(0xc0 & ord($utf8[1]) << 6 | 0x7f & ord($utf8[2]));
            }
            // ignoring UTF-32 for now, sorry
            return '';
        }