Как исправить кодировку в битрикс

Просмотров: 27585
Дата последнего изменения: 23.05.2022

Сложность урока:

4 уровень — сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.

5

Недоступно в лицензиях:

Ограничений нет

Рассмотрим общий порядок конвертации сайта с кодировки cp1251 в UTF-8.

Внимание! Прежде чем приступить к конвертации сайта обязательно сделайте резервную копию сайта и базы данных.

Настоятельно рекомендуем

предварительно потренироваться выполнять конвертацию на отдельной копии сайта. Конвертация сайта сложная операция и каждый случай индивидуален. При её выполнении высока вероятность потерять важные данные, если что-то пойдет не так!

  Общий порядок действий

Редактировать файлы и вносить правки на сервере можно подключаясь по SSH.

Общий порядок действий:

  1. В региональных настройках Настройки > Настройки продукта > Языковые параметры > Региональные настройки сменитe кодировку на UTF-8 для всех языков;
  2. mbstring.func_overload до версии 20.100.0 модуля main

  3. Установите в файле настроек php.ini значение default_charset = "utf8";

    Расположение файла настроек php.ini можно посмотреть заранее в административном разделе на странице

    Настройки PHP

    Страница Настройки PHP (Настройки > Инструменты > Диагностика > Настройки PHP) служит для отображения информации о текущих настройках PHP.

    Подробнее в курсе Администратор. Базовый




    (Loaded Configuration File) или с помощью PHP функции phpinfo().

    Если сайт размещен на Хостинге, возможно понадобится обратиться к хостинг провайдеру для внесения этих настроек.

  4. Добавьте в /bitrix/php_interface/dbconn.php
    define("BX_UTF", true);
    

    В этом же файле удалите строки, относящиеся к кодировке cp1251:

    setlocale(LC_ALL, 'ru_RU.CP1251');
    setlocale(LC_NUMERIC, 'C');
    mb_internal_encoding("Windows-1251");
    
  5. Установите значение ‘value’ => true для utf_mode в файле /bitrix/.settings.php:
    utf_mode =>
        array(
            'value' => true,
            'readonly' => true,
        ),
    
  6. Перекодируйте всю базу данных в UTF-8. Вероятнее всего придётся обращаться за помощью к администратору сервера.
  7. Установите в файле /bitrix/php_interface/after_connect.php
    $DB->Query("SET NAMES 'utf8'");
    $DB->Query('SET collation_connection = "utf8_unicode_ci"');
    

    и в файле /bitrix/php_interface/after_connect_d7.php

    $this->queryExecute("SET NAMES 'utf8'");
    $this->queryExecute('SET collation_connection = "utf8_unicode_ci"');
    //До версии main 22.0 вместо $this использовалась переменная $connection.
  8. Установите в /.htaccess:
    php_value default_charset utf-8
    
  9. Перекодируйте все файлы сайта в UTF-8.
  10. Сбросьте весь кеш;
  11. Выйдите и зайдите заново на сайт чтобы обновить данные сессии.

  База данных

Для конвертации базы (БД) потребуется сменить кодировку самой базы, всех её таблиц и всех текстовых полей таблиц. НЕ выполняйте конвертацию БД из административной части. Используйте для этого другие доступные средства.

В простом случае (без сериализованных данных) перекодировать базу данных и все таблицы можно следующим образом:

  • Изменить кодировку самой базы данных сайта:
    ALTER DATABASE имя_базы_данных charset=utf8;
    
  • Изменить кодировку соединения с базой данных:
    SET NAMES 'utf8'
    
    ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
  • Выполним запрос, который позволит найти все таблицы базы данных и сформировать запрос на смену кодировки для каждой:
    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` = 'имя_базы_данных'
    ORDER BY 1
    ;
    
  • В качестве ответа получим список запросов вида:
    ALTER TABLE `имя_базы_данных`.`имя_таблицы` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
  • Выполните все запросы. База данных и таблицы перекодированы.

Внимание: Если в базе данных хранятся сериализованные данные, то приведенный выше метод конвертации для них не подойдет. Используйте специальные методы / средства для конвертации таких данных.

  Файлы

В простом варианте, когда все файлы сайта в кодировке cp1251, перекодировать их в UTF-8 можно выполнив такую команду в корневой папке сайта (для UNIX систем):

// переходим в корневую папку сайта. Например:
cd /var/www/html/ 

// выполняем команду для перекодирования файлов
find . -name '*.php' -type f -exec iconv -fcp1251 -tutf8 -o /tmp/tmp_file {} ; -exec mv /tmp/tmp_file {} ;

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

Использование внешних программ или конвертация файлов вручную

Часто при использовании внешних программ для конвертации в файлы добавляется специальная последовательность символов, так называемый BOM. Эти символы должны находиться только вначале файла, а поскольку итоговая страница является составной из нескольких php файлов, то спецсимволы появляются в теле страницы. Если делаете конвертацию файлов вручную — не сохраняйте с BOM!

  Советы и ссылки

Основные шаги по конвертации сайта выполнены. Если после конвертации возникают ошибки при открытии сайта, включите режим отладки 'debug' => true в файле /bitrix/.settings.php. Это позволит видеть где и какие возникают ошибки.

Обязательно выполните

проверку системы

Форма Проверка системы (Настройки > Инструменты > Проверка системы) предназначена для всесторонней проверки соответствия параметров системы, на которой осуществляется функционирование проекта, минимальным и рекомендуемым техническим требованиям продукта.

Подробнее в курсе Администратор. Базовый.




. По результатам проверки будет видно, что ещё нужно исправить. Пользуйтесь подсказками под знаками вопроса справа.

Если возникли ошибки с таблицами базы данных (последняя строка проверки), можно посмотреть

логи в журнале




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

Список ссылок по теме:

  • Конвертация сайта из cp1251 в UTF-8 (блог разработчиков);
  • Выбор кодировки сайта;
  • Настройка параметров ядра;
  • Проверка системы в курсе Администратор. Базовый.

41

16.11.200912:1016.11.2009 12:10:02

Несмотря на то, что поддержка UTF8 появилась в продукте давно, остаются много проектов, сделанных на старой версии в cp1251. Теоретически сделать конвертацию не сложно, однако могут возникнуть трудности.
Сразу оговорюсь, что данный пост не претендует на статус официального документа, это должно быть хорошее подспорье по проблеме.

Показать скрытое содержание

Подготовка

  • Для работы сайта на битрикс в utf8 абсолютно необходимо наличие модуля mbstring в php (это есть почти на любом хостинге) и установка параметра

    С этим может быть проблема т.к. с версии php 5.2.8 параметр меняется глобально на весь сервер (http://bugs.php.net/bug.php?id=47187). Уточните вопрос у хостера, но будьте осторожны если вам предложат CGI (см. «как выбрать хостера»).

    На VPS/выделенном сервере параметр без проблем меняется в php.ini.

  • Обязательно сделайте резервную копию работающего сайта, а лучше именно на копии проводите эксперименты. Если что-то пойдёт не так — вы можете потерять данные!

Этапы перехода

  • Подготовить сервер как показано выше
  • Добавить в /bitrix/php_interface/dbconn.php
  • Установить в /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.

Примечание. Часто при использовании внешних программ для конвертации в файлы добавляется специальная последовательность символов, т.н.

BOM

. Эти символы должны находиться только вначале файла, а поскольку итоговая html страница является составной из нескольких php файлов, то спецсимволы появляются в теле html страницы. Если делаете вручную — не сохраняйте с BOM!

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

Скрипт выполняет операции:

— Конвертировать все файлы в utf8
— Конвертировать БД в utf8

Остальное следует делать вручную по списку в том порядке, как написано.

Можно скачать по ссылке:

convert_utf8.php

В итоге получил картинку

Теперь, словно, девушка даже слегка улыбнулась :)

Обновление от 20.02.2012

  • Теперь конвертируются все файлы, не только языки. При этом делается авто определение кодировки файла, а значит можно выполнять конвертацию повторно.
  • Для кодировки базы указывается сравнение utf8_unicode_ci (требуется продуктом).
  • Исправлены ошибки конвертации базы.
  • Шаг конвертации файлов можно пропустить.

Дополнение от 10.09.2018

Если вы использовали интеграцию с почтой, проверьте настройки ящиков, если там установлена кодировка, переключите кодировку сайта.
screen-09.png

В последнее время, в процессе работы, я все меньше и меньше встречаю сайты, которые находятся в некогда популярной кодировке «Windows-1251», приоритетно используемой на русскоязычных ресурсах.

Если верить «Wikipedia» («Википедия» — свободная энциклопедия), на начало апреля 2019 года лишь на 1% всех веб-страниц используется эта кодировка.

Скрывать не буду, я в числе тех, кто так же не использует ее в своих проекта, и вот почему:

  1. Разные проблемы в процессе работы кода.
  2. Лишние действия при работе с кодом в текстовых редакторах.
  3. Отсутствие поддержки многих языков.
  4. Наличие ошибок в верстке сайта при его проверке через validator.w3.org.

Чтобы избежать этих (и не только) неприятных моментов, сегодня в этой статье я подробно расскажу вам, как перевести сайт под управлением CMS 1C-Bitrix из кодировки «Windows-1251» в «UTF-8».

1. Конвертацию (смену кодировки) в CMS 1C-Bitrix мы начнем с самого главного – создания полного бэкапа сайта (его файлов и базы данных).

2. Далее попросите поддержку хостинга установить для сайта следующие директивы:

mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2

Можно попробовать внести изменения и самостоятельно одним из следующих способов.

2.1. Первый вариант – для тех, кто использует хостинг Beget.

2.1.1. Авторизуйтесь в панели управления хостингом.

2.1.2. Перейдите в раздел «Сайты».

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

2.1.3. На открывшейся странице, напротив настраиваемого сайта нажмите на иконку «PHP N», где N – используемая версия PHP на вашем сайте.

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

2.1.4. В открывшейся форме либо вручную добавьте директивы:

mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2

подобно этому:

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

либо в блоке «Применить оптимальные настройки для CMS:» выберите «Bitrix UTF-8» и сохраните изменение нажатием на кнопку «Применить».

2.2. Второй вариант – через конфигурационный файл php.ini. О том, как узнать адрес его местоположения на вашем хостинге, написано в этой нашей статье.

В нем вам необходимо найти и раскомментировать строки (удалить перед ними ;) содержащие «mbstring.internal_encoding» и «mbstring.func_overload», после чего значения выставить на «UTF-8» и «2» соответственно, чтобы получилась следующая картина:

mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2

2.3. Третий вариант – через файл .htaccess, который находится в корневой папке сайта.

Если вы используете стандартный файл .htaccess и версия PHP на хостинге до 5.4, то найдите блок, похожий на:

<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>

И добавьте (или раскомментируйте, если такие строки уже есть, удалив перед ними #) следующие строки:

php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2

Если вы используете стандартный файл .htaccess и версия PHP на хостинге 7+, то найдите блок, похожий на:

<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>

и замените его на:

<IfModule mod_php7.c>
	php_flag session.use_trans_sid off
	php_value mbstring.internal_encoding UTF-8
	php_value mbstring.func_overload 2
</IfModule>

Во всех остальных случаях попробуйте просто прописать следующие строки в самый верх этого же файла:

php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2

2.4. Четвертый вариант – через изменение настроек Apache (httpd.conf) – главный файл конфигурации хостинга/сервера. Его расположение может быть по разным путям, распространенные – это папки /usr/local/etc/apache/ и /etc/httpd/conf/. Более точную информацию на этот счет уточняйте у поддержки хостинга.

В нем для нужного виртуального хостинга (сайта) в блок «VirtualHost» вставьте следующие директивы:

php_admin_value mbstring.internal_encoding UTF-8
php_admin_value mbstring.func_overload 2

3. Авторизуйтесь в панели управления сайтом.

4. Перейдите в раздел «Настройки» – «Настройки продукта» – «Модули».

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

На открывшейся странице удалите модули (если они используются на вашем сайте) «Поиск» (без сохранения таблиц) и «Веб-Аналитика» (без сохранения таблиц, но с сохранением шаблонов сообщений).

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

5. Если на вашем сайте установлен модуль «Форум», вам необходимо удалить букву «ё» из словаря транслита. Для этого в левом меню перейдите по пути «Сервисы» – «Форумы» – «Фильтр нецензурных слов» – «Словарь транслита», найдите и удалите букву из списка.

6. Далее переходите в «Настройки» — «Настройки продукта» – «Языковые параметры» – «Региональные настройки».

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

7. На открывшейся странице находите «ru» в столбце «Название» и щелкаете по нему один раз левой кнопкой мыши.

8. На открывшейся странице, в графе «Кодировка» пишите:

UTF-8

После чего сохраняете изменения нажатием на соответствующую кнопку.

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

После сохранения у вас (в административной части сайта и на самом сайте) могут появиться знаки вопроса – не пугайтесь, на данном этапе это нормальное явление.

9. Далее подключитесь к вашему сайту по FTP.

10. В папке /bitrix/php_interface/ найдите и откройте файл dbconn.php, после чего сразу после <? добавьте:

define('BX_UTF', true);

Сохраните изменения и отправьте файл обратно на сайт.

11. В папке /bitrix/ найдите и откройте файл .settings.php. В нем блок:

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

замените на:

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

Сохраните изменения и отправьте файл обратно на сайт.

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

13. Перейдите на вашем сайте (через браузер) к файлу по пути /convert_utf8.php, после чего на открывшейся странице (если в предыдущих шагах нет никаких ошибок) у вас появится страница следующего вида:

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

13.1. Здесь вы жмете на «Проверка прав доступа» и ждете результата проверки. Если все хорошо (в противном случае будет предложен список файлов, которые запрещены для записи), появится страница следующего вида:

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

Жмете на «Конвертация файлов в UTF8».

13.2. После того, как процесс конвертации файлов завершиться успехом, вы увидите следующую картину:

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

Здесь вы жмете на «Конвертация базы данных в UTF8», и если вдруг вас перекинет на ваш сайт с формой входа – авторизовываетесь, введя данные от профиля администратора, после чего вас перекинет обратно на страницу выше, где вы вновь нажимаете «Конвертация базы данных в UTF8».

Процесс конвертации базы данных не быстрый, так что запаситесь терпением. По завершении появится сообщение следующего характера:

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

14. Возвращаетесь в FTP и удаляете из корневой папки сайта ранее загруженный файл convert_utf8.php.

15. Здесь же (в FTP) откройте файл after_connect.php в папке /bitrix/php_interface/ и строку:

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

замените на:

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

Сохраните изменения и отправьте файл обратно на сайт.

16. В этой же папке откройте файл after_connect_d7.php и строку:

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

замените на:

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

Сохраните изменения и здесь и отправьте файл обратно на сайт.

17. Очистите весь кэш сайта.

18. Выйдите из панели управления сайтом, после чего авторизуйтесь вновь.

19. Установите удаленные из 4 шага модули. Для поиска сделайте переиндексацию (в левом меню «Настройки» – «Поиск» – «Переиндексация» и на открывшейся странице – «Переиндексировать»).

Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8

При большом количестве материалов на сайте этот процесс так же не быстрый, поэтому окончания придется подождать некоторое время.

20. Еще раз очистите весь кэш сайта.

21. Дополнительно: если вы используете интеграцию с почтой, в разделе «Сервисы» – «Почта» – «Почтовые ящики», в каждом почтовом ящике во вкладке «Дополнительные настройки», в графе «Кодировка, в которую конвертировать входящую почту», выставьте «(использовать кодировку сайта)».

Вот, собственно, и все. Инструкция тестировалась на 1C-Bitrix версии 18.0.

Остались вопросы? Задать их можете в комментариях под данной статьей.

Довольно часто встречаемся с ситуацией, когда сайт использует кодировку cp1251, хотя «1C-Битрикс» уже с десяток лет поддерживает кодировку UTF-8. В основном это довольно старые проекты, которые работают и эволюционируют до сих пор, но перейти на UTF-8 не могли из-за кажущихся технических сложностей.
Сегодня расскажу о технической части вопроса, применив которую, вы сможете сконвертировать сайт на Битрикс в кодировку UTF-8.

Но прежде хочу выразить благодарность Волкову Сергею и Шаромову Денису, материалы которых помогли в подготовке этой статьи. 

Внимание! Редактировать файлы сайта необходимо через ftp или ssh.

А теперь приступим.

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:

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 — имя вашей база данных.
Этот запрос выведет на страницу новый запрос, который нужно будет выполнить на этой же странице:
sql.jpg
Копируйте все строки нового запроса (не забудьте отключить ограничение на вывод количества записей на странице) и выполните полученный новый запрос. По завершении выполнения все таблицы базы будут переведены в кодировку 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. Установить модуль «Веб-аналитика», если вы его использовали ранее.

Готово!

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

На первый взгляд эта задача может показаться ужасно нудной. Но на самом деле всё не так страшно, как кажется.

Вступление

Это простая пошаговая инструкция по смене кодировки с 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"');

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

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

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

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

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

Понравилась статья? Поделить с друзьями:
  • Судьба как ее найти что меня ждет
  • Дарксайдерс 3 как найти грехи
  • Как найти официальный сайт гаи
  • Как найти чеченскую песню по словам
  • Как найти ответы решений математика 3 класс