Решение, как перевести сайт на Битрикс из кодировки cp1251 в UTF-8
Решение:
- Бекап (без сохранения поискового индекса и таблиц статистики)
- Настройки сервера или .htaccess
php_value mbstring.func_overload 2 php_value mbstring.internal_encoding UTF-8
- Добавить в /bitrix/php_interface/dbconn.php
define("BX_UTF", true);
- Установить в /bitrix/.settings.php
utf_mode => array('value' => true, 'readonly' => true)
- Конвертировать все файлы и БД в UTF-8 (скрипт в архиве).
- Если ошибка в скрипте (шаг-3) при конвертации базы, то делаем руками:
- phpmyadmin выбрать каждую страницу таблиц - операции - сравнение utf8_unicode_c +все галки
- проверка системы - покажет много ошибок, исправить не может
- открываем журнал ошибки, скопировать всю ALTER... простыню и в SQL запросе выполнить (в админке)
- Изменить в настройках сайта кодировку с windows-1251 на utf-8
- Сменить в /bitrix/php_interface/after_connect.php
- Сменить в /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"');
- Сбросить весь кеш
- Разавторизоваться. Авторизоваться.
- Перевести таблицы в InnoDB
- Оптимизировать таблицы
- Удалить из корневой директории сайта скрипт convert_utf8.php
- В шаблоне, в <head> поменять на UTF-8
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
$DB->Query("SET NAMES 'utf8'"); $DB->Query('SET collation_connection = "utf8_unicode_ci"');
Похожие решения: