Почему JSON неверен, когда в базе данных есть специальный символ?

У меня проблема с JSON, сгенерированным в CodeIgniter с сервером REST, подключенным к базе данных MS-Access.
Если в моей базе данных есть только обычные символы, JSON, сгенерированный на остальном сервере, работает нормально, но если в базе данных есть специальный символ (например: Ø, "и т. Д.), Сгенерированный JSON недопустим и отображает только пустой экран. Я думаю, что код правильный, и кодировка установлена ​​на UTF8 при подключении базы данных MS-Access.

Я использую для проверки JSON: POSTMAN, Firefox и Chrome

Это мой код для генерации JSON (я думаю, что код в порядке, потому что работает нормально (иногда..)

    public function list_minimos_get(){

        $query = $this->db->query("SELECT F_STO.ARTSTO, F_ART.DESART, F_ART.EQUART, F_STO.MINSTO, F_STO.ACTSTO
                FROM (F_STO
                      LEFT JOIN F_ART ON F_STO.ARTSTO = F_ART.CODART)
                      WHERE F_STO.ACTSTO<F_STO.MINSTO
                      AND F_STO.ARTSTO LIKE 'T%';
                 ");

        $respuesta = array(
            'error' => FALSE,
            'stock' =>  $query->result_array()
        );

        $this->response($respuesta);
}

Я могу изменить что-нибудь, чтобы это нормально работало? Я думаю, что проблема в ответе, но я не имею ни малейшего представления, чтобы это исправить...

Отредактированная часть


Я не понимаю, если я изменить ответ на "Ø" тип непосредственно в коде PHP, работает нормально.

Если я использую ISO-8859-15, у меня странный ответ, на этом изображении вы видите в правой части символ ОК (ответ, но ошибка та же), в верхней части символ не ОК (var_dump) и пометил в PINK ошибку:

Если я использую Chrome с плагином для изменения кодировки, var_dump отлично работает в кодировке ISO-8859-15, но ответ не работает.
Я изменяю UTF-8 на ISO-8859-15 во всем проекте, но не работаю...

Я ничего не понимаю...


Заранее спасибо.

1 ответ

Попробуй так

$response = array('error' => FALSE,'stock' =>  $query->result_array());

$this->output
        ->set_status_header(200)
        ->set_content_type('application/json', 'utf-8')
        ->set_output(json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))
        ->_display();
exit;   
Другие вопросы по тегам