Конвертация сайта на bitrix из win1251 в utf8

1. Сделайте резервную копию и обязательно включите в нее базу данных и все файлы сайта. 2. Если вы используете витруальный хостинг, попросите техподдержку установить следующие параметры:

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. Загрузить в корневую директорию сайта скрипт convert_utf8.php, запустить его и дождаться полного его выполнения. Первым шагом проверяются права на изменение файлов, вторым проходит конвертация всех файлов сайта и последним - изменение кодировки базы данных.

Если у вас очень большая база данных, ее конвертация может занять очень долгое время или же вообще не окончиться успешно. В таком случае меняем кодировку базы вручную следующим образом. В панели администратора на странице "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. Установить модуль «Веб-аналитика», если вы его использовали ранее.

15. Сменить кодировку meta-тэгах в коде header.php

Готово!

После конвертации сайта могут возникнуть проблемы с сериализованными массивами (в основном это свойства Html-текст и настройки отображения для пользователей в админке). В таком случае вам поможет вот этот скрипт.

Last updated