VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Наверное, каждому вебмастеру знакома ситуация, когда после переезда, переустановки ПО на сервере, либо по какой-то другой причине, на сайте появляются кракозябры, вопросики и т.д. В данной статье я расскажу как можно исправить эту проблему (как ее избежать я описал вот здесь). Сразу скажу, что не всегда можно восстановить исходные данные, но об этом немного позже.
И так, что мы имеем? А имеем мы следующее: дамп БД и движок (форум, магазин, каталог, CMS и т.д), на котором "почему-то" все отображается не так, как бы нам хотелось.
Первое, что мы сделаем, это проверим отображение кириллицы в дампе, чтобы разобраться, как поступить дальше.
Примечание: если вместо "кракозябров" Вы наблюдаете знаки вопроса, то проблема заключается в некорректной настройке скрипта/mysql-сервера для работы с Вашей БД. В данном случае можно сразу перейти к пункту 2.1
1.1 Открываем дамп Вашей БД текстовым редактором.
Дополнение: я рекомендую использовать EmEditor. Это довольно мощный текстовый редактор, который позволяет автоматически определять кодировку(и) текста в файле.
1.2 Ищем кириллический текст.
Дополнение: быстрее всего будет найти его в таблице сообщений, что мы и сделаем. Нажимаем Ctrl + F, вводим "`post`" (вместо post вы должно ввести имя своей таблицы с сообщениями, либо другой таблицы, где хранится кириллица, без двойных кавычек) и нажимаем Enter.
1.3 Если текст читаем и отображается корректно, тогда переходим к пункту 2.1, в противном случае продолжаем с пункта 1.4.
1.4 Нажимаем File - Reload - Detect All.
Дополнение: редактор выдаст список кодировок. Если их несколько, значит разные участки дампа сохранены в различных кодировках. Перебирайте их по очереди, пока не добьетесь корректного отображения. Если кириллица так и не отобразилась, тогда попробуйте сверить строку с Вашими кракозябрами вот с этой табличкой, далее сохраняете файл дампа в кодировке со второй колонки и выполните File - Reload - Кодировка с первой колонки. Если и здесь все безрезультатно, то, по всей видимости, кириллический текст был перекодирован несколько раз и восстановить его уже невозможно. Последней надеждой может оказаться этот сервис, который поддерживает все основные кодировки, а также умеет работать в автоматическом режиме.
Дополнение № 2: возможна ситуация, когда в дампе присутствуют "кракозябры" нескольких видов, либо содержится как текст, так и "кракозябры" - это означает, что данные в Вашей БД хранятся в различных кодировках. В этом случае обрабатывать дамп нужно по частям, но это уже тема для отдельной статьи.
1.5 Мы добились корректного отображения кириллического текста в дампе, теперь можно попытаться его импортировать и подключить к движку, но я рекомендую перейти к пункту 2.1.
Вторым этапом будет настройка движка для работы в корректной кодировке. Я уже рассказывал об этом более подробно в предыдущей статье о кодировках, поэтому здесь мы опустим описания и пояснения, а сразу перейдем к технической части.
2.1. Снова открываем дамп БД и смотрим кодировку таблиц, структура и содержимое которых было записано в дамп.
Дополнение: Нажимаем Ctrl + F и вводим "CHARSET=" (без кавычек). Если значение charset отлично, от той кодировки, в которой вы сохранили дамп, тогда при импорте нужно использовать принудительное указание кодировки (читаем здесь).
2.2. Создаем БД в кодировке, которую мы только что узнали. Если кроме кодировки в дампе описано еще и сопоставление(сравнение) то запомните его.
2.3. Открываем файл инициализации соединения с БД (обычно это init.php, global.php, connect.php db.php и т.д) и делаем следующее:
Сразу после db_connect добавляем:
PHP Code:
mysql_query("SET NAMES 'X' COLLATE 'Y''");
где X - кодировка БД, Y - сопоставление. (если Вы не знаете сопоставления, тогда удалите из запроса "COLLATE 'Y'").
Дополнение: в vBulletin функция указаний явной кодировки уже описана в class_core.php, Вам необходимо только раскомментировать строку:
PHP Code:
//$config['Mysqli']['charset'] = 'utf8';
и заменить utf8 на cp1251, если Ваш дамп в cp1251.
2.4. Восстанавливаем дамп БД.
Дополнение: при восстановлении БД рекомендую пользоваться скриптом SypexDumper.
Обсудить статью, либо задавать вопрос можно в этой теме.