Всем привет.
Столкнулся на днях с проблемой в импорте базы на хостинг 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
Теперь запускаем импорт дампа.
Вуаля, у вас все отображается корректно.
Если проблема остается, попробуйте указать в .htaccess
AddDefaultCharset utf-8