Перейти к содержимому
UAhostingБлог
PHP и базы данных

Знаки вопроса вместо кириллицы в MySQL: как проверить кодировку

Некорректная кириллица может возникать из-за разных кодировок соединения, таблицы, дампа или HTML-страницы. Сначала выясните, повреждено отображение или уже сохранённые данные.

Сделайте копию и проверьте данные

Экспортируйте базу перед любой конвертацией. Сравните текст в phpMyAdmin и на сайте. Если в самой базе вместо букв уже сохранены обычные знаки вопроса, смена кодировки их не восстановит: нужна корректная копия или исходный источник.

Установите кодировку соединения

Для нового PHP-кода и современной CMS обычно используют UTF-8 с utf8mb4. Пример PDO и вариант mysqli:

<?php
$pdo = new PDO(
    'mysql:host=localhost;dbname=account_site;charset=utf8mb4',
    'account_siteuser',
    'REPLACE_WITH_DATABASE_PASSWORD'
);
// Alternative after creating a mysqli connection:
// $mysqli->set_charset('utf8mb4');

Старые функции mysql_query() удалены из современных PHP. Не добавляйте старый пример с принудительным cp1251 без проверки реальной кодировки приложения.

Проверьте весь путь текста

Согласуйте кодировку файлов, HTTP/HTML, соединения и колонок. Смена collation или массовая конвертация рабочей базы требует теста на копии: двойная перекодировка может повредить текст. Для готовой CMS меняйте её штатные параметры, а не случайные запросы в стороннем файле.

От инструкции — к настройке

Условия и возможности соответствующей услуги — на основном сайте UAhosting.

Посмотреть услугу