При настройке удаленного сервера, столкнулся с проблемой, когда при выводе 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/ |
+--------------------------+----------------------------+
Была такая же проблема при выводе JSON в QML, решилась добавлением этих двух строк:
header('Content-Type: text/html; charset=utf-8');
$sql->set_charset("utf8");
Где $sql - объект mysqli.
Проблема решилась добавлением в файл /etc/mysql/my.cnf [mysqld] директив
character-set-server = utf8
collation-server = utf8_unicode_ci
И не забудьте перезагрузить mysql :)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости