MayorPlay
@MayorPlay
!developer

Почему вместо кириллицы знаки вопросов?

Всем привет, уже сломал голову. Залил сайт на VPS, у меня появилась проблема, что вся кириллица, что выводится из БД отображается в виде знаков вопроса без ромбиков, при этом, вся БД стоит на utf8, в пыхе тоже прописан utf-8 и у сервера тоже прописан utf-8, в чем проблема? На локалке всё работало классно, а на сервере вот такая подстава
  • Вопрос задан
  • 6528 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Давно пора запилить аналог вот этого ответа.
А то же ведь раз в три дня один и тот же вопрос - кракозябры, вопросики, ромбики.
И везде одна и та же ересь про "meta charset" в ответах.

Именно в варианте чеклист, чтобы каждый проверял по конкретным пунктам, в которых четко написано, что делать, вместо невнятного мычания "ну у меня там утээф и еще здесь и вот тута"

В Mysql
  • Кодировка, которую надо выставлять, называется utf8mb4
  • Что там стоит на "всей БД" абсолютно без разницы. Кодировка должна быть указана для таблиц (в отдельных случаях - для поля) при создании. Проверить можно командой SHOW CREATE TABLE table_name

В PHP
  • Должна быть быть выставлена кодировка соединения с БД
    • в PDO через DSN $dbh = new PDO('mysql:host=...;charset=utf8mb4');
    • в mysqli $mysqli->set_charset('utf8mb4');


В браузере
Для того, чтобы браузер корректно отображал кодировку, её надо указать HTTP заголовках.
  • Либо default_charset = "utf-8" в php.ini.
  • Либо руками в коде header('Content-Type: text/html; charset=utf-8');

Проверять в консоли разработчика: вкладка Сеть, кликаем на запрос, смотрим заголовки
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы