@crack_user

Как правильно выставлять кодировку в бд?

Трабл в том, что при создание строки в таблице(с сайта) - в самой таблице пишутся непонятные символы, а на сайте отображается всё нормально.
62b317d7560af958911958.png
Искал решение, почти везде писалось одно и тоже - нужно выставить кодировку при создании базы, нужно вставить команды в конфиг mysql и тому подобное. Всё это у меня стоит, но помогло ток одно решение, а именно - выставлять кодировку при подключение к бд.
new PDO("mysql:host=localhost;dbname=$DB_NAME;charset=utf8;", $DB_USER, $DB_PASS);

Но, это скорее всего дерьмовое решение и лучше использовать какое-то другое, но если ни изменения конфига mysql, ни выставление кодировки при создание бд не помогает, то что тогда?

[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
character-set-server = utf8
collation-server = utf8_unicode_ci

[client]
default-character-set = utf8

Вот такие команды вписывал в конфигы, а также вписывал и похожие на это, везде почти одно и тоже.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Искал решение, почти везде писалось одно и тоже - нужно выставить кодировку при создании базы, нужно вставить команды в конфиг mysql и тому подобное. Всё это у меня стоит, но помогло ток одно решение, а именно - выставлять кодировку при подключение к бд.
Кодировку абсолютно правильно сказано - надо выставлять везде, так как во первых при переносе или изменении конфигурации софта все съедет на дефолтные настройки, которые везде разные. По этому и есть конфиги и настроечные переменные. Единственно кодировку соединения лучше поставить utf8mb4, так как это более современный и обратно совместимый формат.

UTF-8, выставляю с помощью - header('Content-Type: text/html; charset=UTF-8');
Это можно спокойно вынести в конфиг php.ini, или добавить более универсальный код, не требующий руками каждый раз заголовки править: ini_set('default_charset', 'utf-8');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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