Как правильно настроить кодировку php + mariadb?
Добрый день. Настроил подключение к базе через php (последние три строчки — не помогающие эксперименты со stackoverflow)
function __construct($host=HOST,$user=USER,$pass=PASS,$db=DATABASE){ $this->conn = new mysqli($host, $user, $pass, $db); $this->conn->set_charset('utf8'); //$this->conn->query('SET NAMES utf8 COLLATE utf8_unicode_ci'); //$this->conn->query('SET character_set_results utf8'); //$this->conn->query(«SET SESSION collation_connection = 'utf8_general_ci'»); }
При запросе к базе выдает русский текст в виде знаков вопроса. Настройки базы соответствуют рекомендациям(SHOW VARIABLES LIKE 'character_set%'):
Variable_name Value character_set_client utf8mb4 character_set_connection utf8mb4 character_set_database utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_server latin1 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/
Когда такая проблема появилась на локальной машине, я раскомментировал в настройках mysql(my.ini) директивы для работы s utf8,
## UTF 8 Settings init-connect=\'SET NAMES utf8\' collation_server=utf8_unicode_ci character_set_server=utf8 skip-character-set-client-handshake character_sets-dir=«C:/xampp/mysql/share/charsets»
изменил character_set_server на utf8, и все исправилось. Так как доступа на хостинге к этому файлу нет, и изменить настройку сервера я не могу(ТП хостера говорит, что character_set_database приоритетней и по их части все ок), то я зашел в тупик.
Спасибо!
function __construct($host=HOST,$user=USER,$pass=PASS,$db=DATABASE){ $this->conn = new mysqli($host, $user, $pass, $db); $this->conn->set_charset('utf8'); //$this->conn->query('SET NAMES utf8 COLLATE utf8_unicode_ci'); //$this->conn->query('SET character_set_results utf8'); //$this->conn->query(«SET SESSION collation_connection = 'utf8_general_ci'»); }
При запросе к базе выдает русский текст в виде знаков вопроса. Настройки базы соответствуют рекомендациям(SHOW VARIABLES LIKE 'character_set%'):
Variable_name Value character_set_client utf8mb4 character_set_connection utf8mb4 character_set_database utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_server latin1 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/
Когда такая проблема появилась на локальной машине, я раскомментировал в настройках mysql(my.ini) директивы для работы s utf8,
## UTF 8 Settings init-connect=\'SET NAMES utf8\' collation_server=utf8_unicode_ci character_set_server=utf8 skip-character-set-client-handshake character_sets-dir=«C:/xampp/mysql/share/charsets»
изменил character_set_server на utf8, и все исправилось. Так как доступа на хостинге к этому файлу нет, и изменить настройку сервера я не могу(ТП хостера говорит, что character_set_database приоритетней и по их части все ок), то я зашел в тупик.
Спасибо!
Похожие публикации
Хостинг - как объективно оценить качество площадки ?
спанел и корневой сайт
Вредноносные коды, как обезопасить сайты (виртуальный хостинг)
Как делается перенаправление с хостинга на хостинг?
Перенос домена на другой хостинг.
Нет комментариев