@Jeisooo
IT

Как правильно настроить кодировку 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 приоритетней и по их части все ок), то я зашел в тупик.

Спасибо!
  • Вопрос задан
  • 380 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Fortop
Tech/Team lead
Собственно вам нужно выполнить правильный CREATE DATABASE
И CREATE TABLE
С нужным вам чарсетом.
Ответ написан
Комментировать
@nehaeve
Если в самой базе (в phpmyadmin) текст нормально отображается, то попробуйте
$this->conn->query('SET NAMES "utf8"');
вместо закомментированных строк.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы