Сразу оговорюсь, что данный пост не претендует на статус официального документа, это должно быть хорошее подспорье по проблеме.
Подготовка к конвертации сайта
Для работы сайта на битрикс в utf8 абсолютно необходимо наличие модуля mbstring в php (это есть почти на любом хостинге) и установка параметра mbstring.func_overload 2
Если у вас сайт на хостинге TimeWeb то это можно сделать через файл .htaccess
Этап перевода кодировки сайта на Битрикс
- Добавить в /bitrix/php_interface/dbconn.php
define("BX_UTF", true);
- Установить в /bitrix/.settings.php
utf_mode => array('value' => true, 'readonly' => true)
- Изменить в настройках сайта кодировку с windows-1251 на utf-8
- Изменить в настройках языка ru кодировку с windows-1251 на utf-8
- Конвертировать все файлы в utf8
- Конвертировать БД в utf8
- Сменить в /bitrix/php_interface/after_connect.php
$DB->Query("SET NAMES 'cp1251'";);
на$DB->Query("SET NAMES 'utf8'";);
и в файле /bitrix/php_interface/after_connect_d7.php
$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');
- Сбросить весь кеш
- Выйти и зайти на сайт чтобы обновить данные сессии
Практическая сторона вопроса
После смены кодировки сайта публичная часть принимает вид:
Это нормально, браузер пытается показать данные не в той кодировке. Теперь после всех действий внешний вид восстановится, и мы увидим, что процесс прошёл успешно.
Большое число файлов надо конвертировать по шагам, для этого буду использовать
Примечание. Часто при использовании внешних программ для конвертации в файлы добавляется специальная последовательность символов, т.н.
Для конвертации базы надо сменить кодировку базы, всех таблиц и всех текстовых полей таблиц. Вручную это тоже делать не очень удобно. Решил сделать конвертацию файлов и базы в одном скрипте.
Скрипт выполняет операции:
- Конвертировать все файлы в utf8 - Конвертировать БД в utf8 |
Остальное следует делать вручную по списку в том порядке, как написано.
Можно скачать по ссылке:
В итоге получил картинку