Конвертация из Windows-1251 в UTF-8 в Битрикс

Решение, как перевести сайт на Битрикс из кодировки cp1251 в UTF-8

Конвертация из Windows-1251 в UTF-8

Решение:
  1. Бекап (без сохранения поискового индекса и таблиц статистики)
  2. Настройки сервера или .htaccess
    php_value mbstring.func_overload 2
    php_value mbstring.internal_encoding UTF-8
  3. Добавить в /bitrix/php_interface/dbconn.php
    define("BX_UTF", true);
  4. Установить в /bitrix/.settings.php
    utf_mode => array('value' => true, 'readonly' => true)
  5. Конвертировать все файлы и БД в UTF-8 (скрипт в архиве).
  6. Если ошибка в скрипте (шаг-3) при конвертации базы, то делаем руками:
    • phpmyadmin выбрать каждую страницу таблиц - операции - сравнение utf8_unicode_c +все галки
    • проверка системы - покажет много ошибок, исправить не может
    • открываем журнал ошибки, скопировать всю ALTER... простыню и в SQL запросе выполнить (в админке)
  7. Изменить в настройках сайта кодировку с windows-1251 на utf-8
  8. Сменить в /bitrix/php_interface/after_connect.php
  9. $DB->Query("SET NAMES 'utf8'");
    $DB->Query('SET collation_connection = "utf8_unicode_ci"');
  10. Сменить в /bitrix/php_interface/after_connect_d7.php
    $connection = Bitrix\Main\Application::getConnection();
    $connection->queryExecute('SET NAMES "utf8"');
    $connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');
  11. Сбросить весь кеш
  12. Разавторизоваться. Авторизоваться.
  13. Перевести таблицы в InnoDB
  14. Оптимизировать таблицы
  15. Удалить из корневой директории сайта скрипт convert_utf8.php
  16. В шаблоне, в <head> поменять на UTF-8
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Похожие решения:
Изменено: 10 07 2022
Просмотров: 2739