Символы кириллицы в json_encode PHP

14
задан hakre 2 June 2012 в 17:56
поделиться

3 ответа

Это работало с 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;

Спасибо!

2
ответ дан 1 December 2019 в 07:13
поделиться

Похоже на PHP's, созданный в json_encode только работы с UTF-8, и никакие другие дополнительные свойства для тонкой настройки, как это работает относительно кодирования.

я нашел А абсолютно справедливое и сбалансированное сравнение php json библиотеки на Google. Это могло бы помочь Вам. Вы могли бы попробовать другую библиотеку на основе таблиц здесь, если это возможно. Существуют дополнительные библиотеки PHP, перечисленные в json.org , что можно экспериментировать с.

2
ответ дан 1 December 2019 в 07:13
поделиться

Я нашел это в коде 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)

10
ответ дан 1 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: