Смена кодировки с windows-1251 на UTF-8 в Битрикс

Битрикс — смена кодировки с Windows-1251 на UTF-8

Вступление

Это простая пошаговая инструкция по смене кодировки с Windows-1251 на UTF-8 для сайта, работающего на 1C-Битрикс. Перед началом конечно же нужно сделать полную резерную копию сайта. Сам процесс лучше проводить на техдомене. Это потенциально опасный процесс, поэтому лучше подстраховаться.

Настройка параметров mbstring

На хостинге обязательно должен быть установлен модуль mbstring. Если сайт находится на виртуальном хостинге — настройка скорее всего происохдит через интерфейс хостинг-панели. Если не можете найти эти настройки — напишите в техподдержку хостинга. Параметры должны быть такими:

mbstring.func_overload 2
mbstring.internal_encoding UTF-8

Смена кодировки в dbconn.php

В файле /bitrix/php_interface/dbconn.php добавляем такую строчку (если её там ещё нет):

define("BX_UTF", true);

Смена кодировки в .settings.php

В файле /bitrix/.settings.php меняем:

'utf_mode' => array('value' => false, 'readonly' => true)

На:

'utf_mode' => array('value' => true, 'readonly' => true)

Смена кодировки в настройках админ-панели

В админке в разделе Настройки => Настройки продукта => Языковые параметры => Региональные настройки у русского языка указываем кодировку UTF-8:

Меняем кодировку в настройках сайта

Если из-за кракозябр невозможно найти раздел региональных настроек — можно использовать эту ссылку: /bitrix/admin/culture_admin.php?lang=ru

Загрузка скрипта на сайт

Кодировку всех файлов и базы данных будем обновлять с помощью готового скрипта.

Скачиваем архив со скриптом, файл convert_utf8.php из архива загружаем в корень сайта (файл также можно скачать с гитхаба).

Проверка прав доступа

Запускаем скрипт convert_utf8.php и нажимаем кнопку Проверка прав доступа:

Проверка прав доступа

После проверки должно появиться сообщение Шаг 1 выполнен успешно:

Шаг 1 выполнен успешно

Конвертация файлов в UTF-8

Нажимаем кнопку Конвертация файлов в UTF8. После конвертации должно появиться сообщение Шаг 2 выполнен успешно:

Шаг 2 выполнен успешно

Если на данном этапе появилась форма авторизации:

Форма авторизации

Авторизовываемся и заново запускаем конвертацию файлов.

Конвертация базы данных в UTF-8

Нажимаем последнюю кнопку Конвертация базы данных в UTF8. Если на этом шаге тоже появляется форма авторизации — снова авторизовываемся и запускаем конвертацию базы данных заново. В итоге мы должны получить сообщение об успешной конвертации базы данных:

Файл convert_utf8.php можно удалить, он больше не понадобится.

Кодировка в after_connect.php

В файле /bitrix/php_interface/after_connect.php заменяем:

$DB->Query("SET NAMES 'cp1251'");

На:

$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');

Кодировка в after_connect_d7.php

В файле /bitrix/php_interface/after_connect_d7.php заменяем:

$connection->queryExecute("SET NAMES 'cp1251'");

На:

$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');

Сбрасываем кэш и перезаходим в админ-панель

В настройках админки сбрасываем весь кэш и переавторизовываемся. На этом основной процесс смены кодировки завершен. Далее рассмотрим возможные ошибки.

Решение возможных ошибок

Иероглифы в тайтле в админ-панели

Решение: идем в настройки главного модуля: Настройки => Настройки продукта => Настройки модулей => Главный модуль и в поле Название сайта указываем актуальное название сайта.


Тэги: