Знаки вопроса (?????) вместо текста сайта в Godaddy

Автор: | 30.10.2015

Всем привет.

Столкнулся на днях с проблемой в импорте базы на хостинг Godaddy.
Никак не хотел импортироваться кириллический текст, вместо него появлялись знаки вопроса, что означало проблему в кодировке базы.

Для начала, проверяем, правильную ли кодировку отдает движок сайта. Для этого просматриваем код страницы и ищем в HEAD тег HTML meta http-equiv=»Content-Type» content=»text/html; charset=UTF-8″ или просто meta charset=UTF-8″

Вместо UTF-8 может быть любая другая кодировка, главное — правильные и одинаковые настройки в движке и самой базе данных.

Так мы убедились, что движок сайта настроен на отдачу нужной нам кодировки.
Теперь открываем дамп базы данных и проверяем, задана ли в структуре кодировка создаваемой таблице.
То есть во всех таблицах нужно проверить существование указания DEFAUL CHARSET, что-то типа того

CREATE TABLE `ai_commentmeta` (
`meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`meta_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`meta_value` longtext COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (`meta_id`),
KEY `comment_id` (`comment_id`),
KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Исправлять «руками» дамп базы рекомендую в Notepad++

Если DEFAULT CHARSET указан не был, то добавляем в каждый CREATE TABLE указание на правильную кодировку, сохраняем дамп и заливаем его на хостинг.

UTF-8 в Notepad++ нужно сохранять без BOM на всякий случай

Теперь нужно проверить настройки самой базы, в которую мы собираемся делать импорт. В частности, параметр Server connection collation

В случае Godaddy в этом месте у вас возможно будет одна из кодировок LATIN.

Рекомендую установить utf8mb4_general_ci или utf8_general_ci

Должно получиться как-то так
utf8

Теперь запускаем импорт дампа.
Вуаля, у вас все отображается корректно.

Если проблема остается, попробуйте указать в .htaccess
AddDefaultCharset utf-8