Кодировка сайта 1С Битрикс

30.08.2019

Проблемы с кодировкой на сайте часто встречаются после миграции с устаревшего серверного ПО (например, версии PHP) на новое.

Например, кодировка 1251 неактуальна для PHP старше версии 5.6. В связи с чем требуется изменение кодировки на UTF-8, которая является стандартом для последних версий PHP.

Если ваш сайт до миграции на наш хостинг работал в кодировке 1251, то при проверке системы вы можете видеть замечание: "Сайт работает в однобайтовой кодировке". Для исправления ситуации потребуется конвертировать сайт в UTF-8 или сделать изменения PHP-обработчика под кодировку 1251.

Следуйте шагам:

Исправьте настройки базы данных из панели 1С Битрикс в случае, если на странице /bitrix/admin/site_checker.php выводится ошибка: Ошибка! Кодировка базы (utf8) отличается от кодировки соединения (cp1251). [ Исправить ]

Если операция завершилась неуспешно, то повторно повторите исправление.

В редких случаях требуется ручное исправление из phpMyAdmin:

В панели хостинга в разделе "базы данных" перейдите в базу данных вашего сайта. После редиректа в phpMyAdmin войдите в раздел "операции" и в блоке "сравнение" выберите "utf-8_general_ci". Нажмите кнопку "вперед".

Редактирование php.ini для выбранной версии режиме PHP вашего сайта:

Убедитесь, что в настройках php.ini для выбранной версии PHP вашего сайта установлены значения:

Для варианта конвертации в utf-8:

mbstring.func_overload = 2
mbstring.internal_encoding = utf-8
default_charset = "utf-8"

Для варианта без конвертации (остается кодировка 1251):

mbstring.func_overload = 0
mbstring.internal_encoding = cp1251
default_charset = "cp1251"

Для однобайтовой кодировки (1251) также потребутеся отключить кодировку UTF-8 в панели хостинга в разделе "WWW-домены":

 

Далее необходимо привести настройки согласно требуемой кодировке в файлах системы 1С Битрикс:

Для варианта корвертации в utf-8:

В /bitrix/php_interface/dbconn.php должно быть значение: define('BX_UTF', true);

В /bitrix/.settings.php должно быть значение: 'utf_mode' => array ('value' => true, 'readonly' => true,),

 

Для варианта без конвертации (остается кодировка 1251):

В /bitrix/php_interface/dbconn.php полностью удалить значение: define('BX_UTF', true);

В /bitrix/.settings.php должно быть значение: 'utf_mode' => array ('value' => false, 'readonly' => true,),