Проблема с mySQL-PHP-JSON UTF-8

254
13 апреля 2017, 20:02

При настройке удаленного сервера, столкнулся с проблемой, когда при выводе JSON данных, все символы юникода заменяются на ?. В консоли/MySQLWorkBench'e все выводится корректно, сама страница отображает все остальные юникод символы нормально, но через JSON приходят только ?.
Пробовал:

//php
mb_internal_encoding("UTF-8");
$sql->set_charset("utf8");
//mysql 
SET NAMES utf8

UPD: Прямой вывод из базы также дает запись вида ????
UPD2: Кодировки для каждого типа:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Answer 1

Была такая же проблема при выводе JSON в QML, решилась добавлением этих двух строк:

header('Content-Type: text/html; charset=utf-8');
$sql->set_charset("utf8");

Где $sql - объект mysqli.

Answer 2

Проблема решилась добавлением в файл /etc/mysql/my.cnf [mysqld] директив

character-set-server = utf8
collation-server = utf8_unicode_ci

И не забудьте перезагрузить mysql :)

READ ALSO
Ошибка в ссылках php

Ошибка в ссылках php

Код с ошибкой:

248
Объединить два SQL запроса в один

Объединить два SQL запроса в один

Использую MySQL+PHP Как объединить два следующих SELECT в один запрос?

221
Multiple image post in Facebook

Multiple image post in Facebook

Я сделал, чтобы можно было постить одну фото с текстомНадо сделать, чтобы было множество фото

285