Смена кодировки сайта с windows-1251 на utf-8
Пошаговая инструкция для конвертации сайта в utf-8 на 1С-Битрикс:- Первую конвертацию делаем на тестовой копии сайта.
- Делаем полную резервную копию сайта (для теста необязательно)
- Удаляем модули "Поиск", "Перевод", "Веб-аналитика" без сохранения таблиц
- Меняем в региональных настройках сайта кодировку с windows-1251 на utf-8. (/bitrix/admin/site_admin.php)
- В /bitrix/php_interface/dbconn.php добавляем
define("BX_UTF", true);
- В корневую директорию сайта загружаем скрипт convert_utf8.php и запускаем его. Иногда в скрипт не подтягивается название таблицы БД, можно прописать заранее вручную в коде скрипта.
- В /bitrix/php_interface/after_connect.php добавляем/меняем
$DB->Query("SET NAMES 'utf8'"); $DB->Query('SET collation_connection = "utf8_unicode_ci"');
- В /bitrix/php_interface/after_connect_d7.php добавляем
$this->queryExecute("SET NAMES 'utf8'"); $this->queryExecute('SET collation_connection = "utf8_unicode_ci"');
- В /bitrix/.settings.php меняем
'utf_mode' => array ( 'value' => true, 'readonly' => true, ),
- В /bitrix/php_interface/dbconn.php добавляем
mb_internal_encoding('UTF-8');
- Настраиваем веб-сервер.
php_value default_charset utf-8 AddDefaultCharset utf-8 // и т.п. Проверка сайта подскажет что еще нужно поменять /bitrix/admin/site_checker.php
- Делаем рез. копию БД.
- В корневую директорию сайта загружаем скрипт convert_serialize.php, пока НЕ запускаем
- Смотрим есть ли свойства инфоблоков, хранящиеся в отдельных таблицах (b_iblock_element_prop), если есть, добавляем их в convert_serialize.php (в коде есть примеры)
- Конвертируем сериализованные данные в БД с помощью скрипта convert_serialize.php (выполняем convert_serialize.php)
- Устанавливаем удалённые модули, делаем полную переиндексацию.
- Удаляем весь кеш сайта
- Проверяем сайт, если всё прошло успешно, повторяем на боевом сайте.
Сконвертировал несколько сайтов по данному алгоритму, всё прошло успешно. Но, битрикс постоянно обновляется, т.ч. со временем могут добавиться новые нюансы.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.