Json и кириллица

fixxxer

К.О.
Партнер клуба
Нет никакой проблемы в том, чтобы отправлять аякс-запросы в любой кодировке.
Надо просто отказаться от использования encodeURI()/encodeURIComponent() в аякс-библиотеке, и написать свой аналог, который будет работать аналогично php-шному urlencode().
 

Тугай

Новичок
Есть рабочая библиотека http://dklab.ru/lib/JsHttpRequest/ , где эта функция используется и работает с win-1251.

PHP:
...
            $text = $this->php2js($result);
        }

        // Content-type header.
        // In XMLHttpRequest mode we must return text/plain - damned stupid Opera 8.0. :(
        $ctype = !empty($this->_contentTypes[$this->LOADER])? $this->_contentTypes[$this->LOADER] : $this->_contentTypes[''];
        header("Content-type: $ctype; charset=$encoding");
        
        if ($this->LOADER != "xml") {
            // In non-XML mode we cannot use plain JSON. So - wrap with JS function call.
            // If top.JsHttpRequestGlobal is not defined, loading is aborted and 
            // iframe is removed, so - do not call dataReady().
            $text = "" 
                . ($this->LOADER == "form"? 'top && top.JsHttpRequestGlobal && top.JsHttpRequestGlobal' : 'JsHttpRequest') 
                . ".dataReady(" . $text . ")\n"
                . "";
            if ($this->LOADER == "form") {
                $text = '<script type="text/javascript" language="JavaScript"><!--' . "\n$text" . '//--></script>';
            }
        }
...
 

fixxxer

К.О.
Партнер клуба
Она старая. Там много подпорок для совместимости с браузерами, которые сейчас и в музее-то не найти. Половину кода можно смело зачистить.

Ну и передавать данные в виде xml щас уже не придет в голову никому :)

Но если хочется просто взять готовое и ничего не делать, сойдет вполне.
 

kokos

Новичок
Уважаемые форумчане!

Прошерстил весь интернет и ваш форум в том числе, не могу найти ответ на вопрос:

json_encode никак не хочет пропускать через себя кириллицу.

Цепляю данные из MySQL (БД, таблица, столбцы collation - utf8_general_ci). записываю в массив. Проверяю на всякий случай, что UTF-8.

После этого пытаюсь вывести echo или print_r(json_encode($arr)) и вместо значений в кириллическими символами выводит NULL.

Подскажите, что не так с json_encode?

Спасибо.
 

kokos

Новичок
Добавил "mysql_query('SET CHARACTER SET utf8');"

Вроде заработало.

Странно, строки и так были в UTF-8...
 
Сверху