Изменение кодировки Битрикс с cp1251 на UTF-8
от v2Team
Довольно часто встречается ситуация, когда сайт использует кодировку cp1251 (так как эта кодировка устанавливается по-умолчанию), и это не смотря на то, что "1C-Битрикс" уже более 10 лет поддерживает кодировку UTF-8.
По большей части это довольно старые проекты, которые либо не обновлялись, либо прошли все этапы эволюции, но перейти на UTF-8 не смогли из-за ожидаемых технических сложностей.
Сегодня мы расскажем Вам о том как сконвертировать сайт на Битрикс в кодировку UTF-8 с наименьшими трудозатратами.
Внимание! Редактировать файлы сайта необходимо через ftp или ssh.
А теперь приступим.
1. Сделайте резервную копию и обязательно включите в нее базу данных и все файлы сайта.2. Если вы используете витруальный хостинг, попросите техподдержку установить следующие параметры (на некоторых виртуальных хостингах активировать эти опции можно через файл .htaccess):
mbstring.func_overload 2
mbstring.internal_encoding UTF-8
Если вы используете виртуальную машину Битрикс, можно установить их самостоятельно.3. Удалите модули "Поиск" и "Веб-аналитика" (таблицы сохранять не нужно, а вот шаблоны сообщений сохраните).
4. Удалить из словаря транслита в модуле "Форум" (Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита) букву 'ё', которая имеет ID = 7.
5. Изменить в региональных настройках кодировку с windows-1251 на utf-8.
В настройках сайта обязательно должна быть выбрана соответствующая региональная настройка.
6. Добавить в /bitrix/php_interface/dbconn.php:
define("BX_UTF", true);
7. Загрузить в корневую директорию сайта скрипт Первым шагом проверяются права на изменение файлов, вторым проходит конвертация всех файлов сайта и последним - изменение кодировки базы данных.
Если у вас очень большая база данных, ее конвертация может занять очень долгое время или же вообще не окончиться успешно. В таком случае меняем кодировку базы вручную следующим образом. В панели администратора на странице "SQL-запрос" выполняем следующий запрос:
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;') as
sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'database_name' ORDER BY 1
Где database_name - имя вашей база данных.Этот запрос выведет на страницу новый запрос, который нужно будет выполнить на этой же странице:
Копируйте все строки нового запроса (не забудьте отключить ограничение на вывод количества записей на странице) и выполните полученный новый запрос. По завершении выполнения все таблицы базы будут переведены в кодировку UTF-8.
8. Пропишите в /bitrix/php_interface/after_connect.php:
$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');
9. Пропишите в /bitrix/php_interface/after_connect_d7.php:
$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');
10. Пропишите в /bitrix/.settings.php:return array (
'utf_mode' =>
array (
'value' => true,
'readonly' => true,
),
11. Очистите весь кеш сайта (скрипт конвертации после завершения предложит Вам ссылку для этого).12. Удалите скрипт convert_utf8.php.
13. Установите модуль «Поиск» и сделайте переиндексацию.
14. Установить модуль «Веб-аналитика».
Готово!
После конвертации сайта могут возникнуть проблемы с сериализованными массивами (в основном это свойства Html-текст и настройки отображения для пользователей в админке). В таком случае вам поможет вот этот скрипт.Поработаем?
Опишите свой запрос, мы расчитаем стоимость вашей задачи.