Сразу оговорюсь, что данный пост не претендует на статус официального документа, это должно быть хорошее подспорье по проблеме.
Подготовка к конвертации сайта
Для работы сайта на битрикс в 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"');
- Сбросить весь кеш
- Выйти и зайти на сайт чтобы обновить данные сессии
Практическая сторона вопроса
После смены кодировки сайта публичная часть принимает вид:
Это нормально, браузер пытается показать данные не в той кодировке. Теперь после всех действий внешний вид восстановится, и мы увидим, что процесс прошёл успешно.
Большое число файлов надо конвертировать по шагам, для этого буду использовать . По большому счёту, тут надо только переделать функцию замены в конвертацию через mb_convert_encoding.
Примечание. Часто при использовании внешних программ для конвертации в файлы добавляется специальная последовательность символов, т.н. . Эти символы должны находиться только вначале файла, а поскольку итоговая html страница является составной из нескольких php файлов, то спецсимволы появляются в теле html страницы. Если делаете вручную - не сохраняйте с BOM!
Для конвертации базы надо сменить кодировку базы, всех таблиц и всех текстовых полей таблиц. Вручную это тоже делать не очень удобно. Решил сделать конвертацию файлов и базы в одном скрипте.
Скрипт выполняет операции:
|
- Конвертировать все файлы в utf8 - Конвертировать БД в utf8 |
Остальное следует делать вручную по списку в том порядке, как написано.
Можно скачать по ссылке: ←
В итоге получил картинку
