function Services_JSON::utf82utf16 in Album Photos 6.2
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 multibye string extension.
@access private
Parameters
string $utf8 UTF-8 character:
Return value
string UTF-16 character
1 call to Services_JSON::utf82utf16()
- Services_JSON::encode in php/json-php4.php 
- encodes an arbitrary variable into JSON format
File
- php/json-php4.php, line 192 
Class
- Services_JSON
- Converts to and from JSON format.
Code
function utf82utf16($utf8) {
  // oh please oh please oh please oh please oh please
  if (function_exists('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 '';
}