Как поменять кодировку сайта с windows 1251 на utf 8 битрикс

Обновлено: 06.07.2024

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

Переезжаем на windows хостинг. Проблемы, к которым нужно быть готовыми За три последних месяца довелось переносить сайты клиентов на всякие разные сервера - от их личных на windows до plesk на том же windows. Обнаружилось несколько мелких неприятных моментов, знание которых сильно облегчит жизнь. Сразу уточню, что не имею ничего против windows хостинга. К сожалению, если это внутренний сервер компании, то он, как правило, настроен через одно место и переубедить администратора достаточно сложн

Переход на авторизацию по E-mail на действующем сайте на «Битрикс» Стандартный механизм авторизации пользователя на «Битрикс» основан на логине и пароле. Несомненно, пользователям удобнее использовать адрес электронной почты в качестве логина. Казалось бы, можно назвать поле логина «E-mail» и этим ограничиться? Но нет. Пользователей название поля ни к чему не обязывает. Потребуется дополнительная валидация. Предлагаем простой и безошибочный рецепт авторизации по электронной почте. 1. Редактиру

Автоматическая очистка кэша «Битрикс» Вы регулярно очищаете кэш «Битрикс»? Никогда не забываете? А если нет, то как вы можете быть уверены, что посетители сайта видят обновленную версию, а не кэшированную? Предлагаем решение, агент для регулярной автоматической очистки кэша «Битрикс». 1. Настроим агент в Панели управления Перейдя в Панели управления по адресу Настройки > Настройки продукта > Агенты, создадим новый агент. Зададим настройки: Функция: clean_expire_cache(); Сортировка: 100 Инт

Создание заказа полностью под гостем Стандартный компонент одношагового оформления заказа (sale.order.ajax) уже умеет создавать заказ под гостем, но с регистрацией пользователя. А если надо привязать гостевой заказ по e-mail к существующему пользователю? Уже никак, выдастся ошибка, что с таким e-mail пользователь есть и либо выбирайте другой e-mail, или авторизуйтесь. Ох и намучился я с разными вариантами подхода к решению задачи :) ведь стояло главное условие - нельзя трогать шаблон, и, тем

Вы отметили максимальное количество друзей (64) на этой фотографии.

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

Чтобы отметить человека, наведите на него курсор и нажмите левую кнопку мыши. Чтобы отметиться на фото, наведите на себя курсор и нажмите левую кнопку мыши.

Смена кодировки Битрикс на UTF8

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

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

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

1. Сделайте резервную копию и обязательно включите в нее базу данных и все файлы сайта.

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

Если вы используете виртуальную машину Битрикс, можно установить их самостоятельно.

Буква Ё в словаре транслита

4. Удалить из словаря транслита в модуле "Форум" (Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита) букву 'ё', которая имеет >

Региональные настройки Битрикс

5. Изменить в региональных настройках кодировку с windows-1251 на utf-8.

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

6. Добавить в /bitrix/php_interface/dbconn.php:

7. Загрузить в корневую директорию сайта скрипт convert_utf8.php , запустить его и дождаться полного его выполнения.
Первым шагом проверяются права на изменение файлов, вторым проходит конвертация всех файлов сайта и последним - изменение кодировки базы данных.
Если у вас очень большая база данных, ее конвертация может занять очень долгое время или же вообще не окончиться успешно. В таком случае меняем кодировку базы вручную следующим образом. В панели администратора на странице "SQL-запрос" выполняем следующий запрос:

sql.jpg

Где database_name - имя вашей база данных.
Этот запрос выведет на страницу новый запрос, который нужно будет выполнить на этой же странице:

Копируйте все строки нового запроса (не забудьте отключить ограничение на вывод количества записей на странице) и выполните полученный новый запрос. По завершении выполнения все таблицы базы будут переведены в кодировку UTF-8.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

Сначала сделать все резервные копии: файлов сайта и базы данных, чтобы откатиться, если что-то пойдёт не так. У меня "не так" пошло :) и да резервные копии очень пригодились. Никогда не знаешь, чего ждать от битрикса.

2. php.ini и .htaccess

В файл /.htaccess добавить строки:

3. Удалить модули поиска и веб-аналитики

4. Удалить букву ё

5. Перекодировать всю базу данных в UTF-8

Сменить кодировку базы данных, типов полей с cp1251 на utf8: это можно делать на сервере или локально. Я делал локально, потом импортировал базу уже исправленную в кодировку utf8. Здесь в помощь команда

где database_name - имя вашей база данных.

Этот запрос выведет на страницу новый запрос, который нужно будет выполнить на этой же странице.

Копируйте все строки нового запроса (выбрав выводить все запросы на одной странице) и выполните полученный новый запрос. По завершении выполнения все таблицы базы будут переведены в кодировку UTF-8.

Проверить и посмотреть какая кодировка у таблиц в БД можно через phpmyadmin, выполнив SQL

а поменять, если где-то увидите latin1 можно командой

6. after_connect

Пропишите в /bitrix/php_interface/after_connect.php

Пропишите в /bitrix/php_interface/after_connect_d7.php:

7. Пропишите в /bitrix/.settings.php:

8. Сходите на турники сделайте подтягивания

9. Рекурсивная смена кодировки файлов в папке и вложенных папках с windows-1251 в UTF-8 (utf8).

Можно вручную в среде разработки, а можно скриптом по ssh. Создаем файл iconv.sh с содержимым:

Тут может возникнуть дальше ошибка, если вы создали файл в Windows. Может такая ошибка выдаться при попытке запустить скрипт уже на сервере:

Надо просто убрать лишние невидимые символы <CR>, которые добавил windows в ваш файл.

Наберите od -a test.sh, чтобы увидеть эти символы невидимые.

Из-за них файл не исполняется, вот как windows подпортил наш файл sh. Можете выполнить команду для вашего файла, которая очистит его.

Но если этой функции не установлено на сервере, то создайте файлик через консоль.

Открыть новый файл с именем iconv2.sh

Введите код, вручную напечатайте

Для выхода и сохранения файла нажмите

CTRL + X потом Y и потом Enter

Сделайте файл исполняемым командой (Нужно дать этому файлу разрешение на выполнение как программы.)

Далее через терминал запускаем наш скрипт

sh – запускает сам скрипт
iconv.sh – название файла скрипта
folder – путь к той папке, файлы которой нам нужно перекодировать, этот путь может выглядеть так, например, ../server/project – перекодирует все файлы в папке server/project, которая находиться в домашней директории юзера (пользователя системы)
js – расширение файлов, которые нужно переконвертировать.

10. dbconn

В файл /bitrix/php_interface/dbconn.php добавить строки:

11. Админка Битрикса

В админке битрикса изменить в настройках языка ru кодировку с windows-1251 на utf-8

12. Очистить кеш сайта, выйти и войти в админку

13. Установить модуль поиска и сделать переиндексацию


almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Читайте также: