Это работало с http://pear.php.net/pepr/pepr-proposal-show.php?id=198
С противным обходом в JSON.php, строки 298..
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
$c += 1;
//$utf16 = $this->utf82utf16($char);
//$ascii .= sprintf('\u%04s', bin2hex($utf16));
$ascii .= $char;
Спасибо!
Похоже на PHP's, созданный в json_encode
только работы с UTF-8
, и никакие другие дополнительные свойства для тонкой настройки, как это работает относительно кодирования.
я нашел А абсолютно справедливое и сбалансированное сравнение php json библиотеки на Google. Это могло бы помочь Вам. Вы могли бы попробовать другую библиотеку на основе таблиц здесь, если это возможно. Существуют дополнительные библиотеки PHP, перечисленные в json.org , что можно экспериментировать с.
Я нашел это в коде Zend framework:
http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Json/Decoder.php
Взгляните на функцию decodeUnicodeString (строка 474):
/**
* Decode Unicode Characters from \u0000 ASCII syntax.
*
* This algorithm was originally developed for the
* Solar Framework by Paul M. Jones
*
* @link http://solarphp.com/
* @link http://svn.solarphp.com/core/trunk/Solar/Json.php
* @param string $value
* @return string
*/
public static function decodeUnicodeString($chrs)
Она статична, и вы можете легко его извлечь - просто замените строку:
490: $utf8 .= self::_utf162utf8($utf16);
на:
490: $utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
Не идеальное решение, но помогло мне: o)