- Изменение кодировки Битрикс с cp1251 на UTF-8
- А теперь приступим.
- Битрикс — смена кодировки с Windows-1251 на UTF-8
- Вступление
- Настройка параметров mbstring
- Смена кодировки в dbconn.php
- Смена кодировки в .settings.php
- Смена кодировки в настройках админ-панели
- Загрузка скрипта на сайт
- Проверка прав доступа
- Конвертация файлов в UTF-8
- Конвертация базы данных в UTF-8
- Кодировка в after_connect.php
- Кодировка в after_connect_d7.php
- Сбрасываем кэш и перезаходим в админ-панель
- Решение возможных ошибок
- Иероглифы в тайтле в админ-панели
- Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8
- Смена кодировки Битрикса с windows-1251 в UTF-8 (utf8)
- 1. Резервные копии файлов и БД
- 2. php.ini и .htaccess
- 3. Удалить модули поиска и веб-аналитики
- 4. Удалить букву ё
- 5. Перекодировать всю базу данных в UTF-8
- 6. after_connect
- 7. Пропишите в /bitrix/.settings.php:
- 8. Сходите на турники сделайте подтягивания
- 9. Рекурсивная смена кодировки файлов в папке и вложенных папках с windows-1251 в UTF-8 (utf8).
- 10. dbconn
- 11. Админка Битрикса
- 12. Очистить кеш сайта, выйти и войти в админку
- 13. Установить модуль поиска и сделать переиндексацию
Изменение кодировки Битрикс с cp1251 на UTF-8
Довольно часто встречается ситуация, когда сайт использует кодировку cp1251 (так как эта кодировка устанавливается по-умолчанию), и это не смотря на то, что «1C-Битрикс» уже более 10 лет поддерживает кодировку UTF-8.
По большей части это довольно старые проекты, которые либо не обновлялись, либо прошли все этапы эволюции, но перейти на UTF-8 не смогли из-за ожидаемых технических сложностей.
Сегодня мы расскажем Вам о том как сконвертировать сайт на Битрикс в кодировку UTF-8 с наименьшими трудозатратами.
Внимание! Редактировать файлы сайта необходимо через ftp или ssh.
А теперь приступим.
1. Сделайте резервную копию и обязательно включите в нее базу данных и все файлы сайта.
2. Если вы используете витруальный хостинг, попросите техподдержку установить следующие параметры (на некоторых виртуальных хостингах активировать эти опции можно через файл .htaccess): Если вы используете виртуальную машину Битрикс, можно установить их самостоятельно.
3. Удалите модули «Поиск» и «Веб-аналитика» (таблицы сохранять не нужно, а вот шаблоны сообщений сохраните).
4. Удалить из словаря транслита в модуле «Форум» (Сервисы > Форумы > Фильтр нецензурных слов > Словарь транслита) букву ‘ё’, которая имеет >
5. Изменить в региональных настройках кодировку с windows-1251 на utf-8.
В настройках сайта обязательно должна быть выбрана соответствующая региональная настройка.
6. Добавить в /bitrix/php_interface/dbconn.php:
7. Загрузить в корневую директорию сайта скрипт convert_utf8.php , запустить его и дождаться полного его выполнения.
Первым шагом проверяются права на изменение файлов, вторым проходит конвертация всех файлов сайта и последним — изменение кодировки базы данных.
Если у вас очень большая база данных, ее конвертация может занять очень долгое время или же вообще не окончиться успешно. В таком случае меняем кодировку базы вручную следующим образом. В панели администратора на странице «SQL-запрос» выполняем следующий запрос:
Где database_name — имя вашей база данных.
Этот запрос выведет на страницу новый запрос, который нужно будет выполнить на этой же странице:
Копируйте все строки нового запроса (не забудьте отключить ограничение на вывод количества записей на странице) и выполните полученный новый запрос. По завершении выполнения все таблицы базы будут переведены в кодировку UTF-8.
8. Пропишите в /bitrix/php_interface/after_connect.php:
9. Пропишите в /bitrix/php_interface/after_connect_d7.php:
10. Пропишите в /bitrix/.settings.php:
11. Очистите весь кеш сайта (скрипт конвертации после завершения предложит Вам ссылку для этого).
12. Удалите скрипт convert_utf8.php.
13. Установите модуль «Поиск» и сделайте переиндексацию.
Битрикс — смена кодировки с Windows-1251 на UTF-8
Вступление
Это простая пошаговая инструкция по смене кодировки с Windows-1251 на UTF-8 для сайта, работающего на 1C-Битрикс. Перед началом конечно же нужно сделать полную резерную копию сайта. Сам процесс лучше проводить на техдомене. Это потенциально опасный процесс, поэтому лучше подстраховаться.
Настройка параметров mbstring
На хостинге обязательно должен быть установлен модуль mbstring. Если сайт находится на виртуальном хостинге — настройка скорее всего происохдит через интерфейс хостинг-панели. Если не можете найти эти настройки — напишите в техподдержку хостинга. Параметры должны быть такими:
Смена кодировки в dbconn.php
В файле /bitrix/php_interface/dbconn.php добавляем такую строчку (если её там ещё нет):
Смена кодировки в .settings.php
В файле /bitrix/.settings.php меняем:
Смена кодировки в настройках админ-панели
В админке в разделе Настройки => Настройки продукта => Языковые параметры => Региональные настройки у русского языка указываем кодировку UTF-8:
Если из-за кракозябр невозможно найти раздел региональных настроек — можно использовать эту ссылку: /bitrix/admin/culture_admin.php?lang=ru
Загрузка скрипта на сайт
Кодировку всех файлов и базы данных будем обновлять с помощью готового скрипта.
Скачиваем архив со скриптом, файл convert_utf8.php из архива загружаем в корень сайта.
Проверка прав доступа
Запускаем скрипт convert_utf8.php и нажимаем кнопку Проверка прав доступа:
После проверки должно появиться сообщение Шаг 1 выполнен успешно:
Конвертация файлов в UTF-8
Нажимаем кнопку Конвертация файлов в UTF8. После конвертации должно появиться сообщение Шаг 2 выполнен успешно:
Если на данном этапе появилась форма авторизации:
Авторизовываемся и заново запускаем конвертацию файлов.
Конвертация базы данных в UTF-8
Нажимаем последнюю кнопку Конвертация базы данных в UTF8. Если на этом шаге тоже появляется форма авторизации — снова авторизовываемся и запускаем конвертацию базы данных заново. В итоге мы должны получить сообщение об успешной конвертации базы данных:
Файл convert_utf8.php можно удалить, он больше не понадобится.
Кодировка в after_connect.php
В файле /bitrix/php_interface/after_connect.php заменяем:
Кодировка в after_connect_d7.php
В файле /bitrix/php_interface/after_connect_d7.php заменяем:
Сбрасываем кэш и перезаходим в админ-панель
В настройках админки сбрасываем весь кэш и переавторизовываемся. На этом основной процесс смены кодировки завершен. Далее рассмотрим возможные ошибки.
Решение возможных ошибок
Иероглифы в тайтле в админ-панели
Решение: идем в настройки главного модуля: Настройки => Настройки продукта => Настройки модулей => Главный модуль и в поле Название сайта указываем актуальное название сайта.
Другие посты из этой же рубрики:
Copyright © 2015-2021, Алфавитка.ру – IT-блог разработчика.
Правильная смена кодировки 1C-Bitrix с Windows-1251 (CP1251) на UTF-8
В последнее время, в процессе работы, я все меньше и меньше встречаю сайты, которые находятся в некогда популярной кодировке «Windows-1251», приоритетно используемой на русскоязычных ресурсах.
Если верить «Wikipedia» («Википедия» — свободная энциклопедия), на начало апреля 2019 года лишь на 1% всех веб-страниц используется эта кодировка.
Скрывать не буду, я в числе тех, кто так же не использует ее в своих проекта, и вот почему:
- Разные проблемы в процессе работы кода.
- Лишние действия при работе с кодом в текстовых редакторах.
- Отсутствие поддержки многих языков.
- Наличие ошибок в верстке сайта при его проверке через validator.w3.org.
Чтобы избежать этих (и не только) неприятных моментов, сегодня в этой статье я подробно расскажу вам, как перевести сайт под управлением CMS 1C-Bitrix из кодировки «Windows-1251» в «UTF-8».
1. Конвертацию (смену кодировки) в CMS 1C-Bitrix мы начнем с самого главного – создания полного бэкапа сайта (его файлов и базы данных).
2. Далее попросите поддержку хостинга установить для сайта следующие директивы:
Можно попробовать внести изменения и самостоятельно одним из следующих способов.
2.1. Первый вариант – для тех, кто использует хостинг Beget.
2.1.1. Авторизуйтесь в панели управления хостингом.
2.1.2. Перейдите в раздел «Сайты».
2.1.3. На открывшейся странице, напротив настраиваемого сайта нажмите на иконку «PHP N», где N – используемая версия PHP на вашем сайте.
2.1.4. В открывшейся форме либо вручную добавьте директивы:
либо в блоке «Применить оптимальные настройки для CMS:» выберите «Bitrix UTF-8» и сохраните изменение нажатием на кнопку «Применить».
2.2. Второй вариант – через конфигурационный файл php.ini. О том, как узнать адрес его местоположения на вашем хостинге, написано в этой нашей статье.
В нем вам необходимо найти и раскомментировать строки (удалить перед ними 😉 содержащие «mbstring.internal_encoding» и «mbstring.func_overload», после чего значения выставить на «UTF-8» и «2» соответственно, чтобы получилась следующая картина:
2.3. Третий вариант – через файл .htaccess, который находится в корневой папке сайта.
Если вы используете стандартный файл .htaccess и версия PHP на хостинге до 5.4, то найдите блок, похожий на:
И добавьте (или раскомментируйте, если такие строки уже есть, удалив перед ними #) следующие строки:
Если вы используете стандартный файл .htaccess и версия PHP на хостинге 7+, то найдите блок, похожий на:
и замените его на:
Во всех остальных случаях попробуйте просто прописать следующие строки в самый верх этого же файла:
2.4. Четвертый вариант – через изменение настроек Apache (httpd.conf) – главный файл конфигурации хостинга/сервера. Его расположение может быть по разным путям, распространенные – это папки /usr/local/etc/apache/ и /etc/httpd/conf/. Более точную информацию на этот счет уточняйте у поддержки хостинга.
В нем для нужного виртуального хостинга (сайта) в блок «VirtualHost» вставьте следующие директивы:
4. Перейдите в раздел «Настройки» – «Настройки продукта» – «Модули».
На открывшейся странице удалите модули (если они используются на вашем сайте) «Поиск» (без сохранения таблиц) и «Веб-Аналитика» (без сохранения таблиц, но с сохранением шаблонов сообщений).
5. Если на вашем сайте установлен модуль «Форум», вам необходимо удалить букву «ё» из словаря транслита. Для этого в левом меню перейдите по пути «Сервисы» – «Форумы» – «Фильтр нецензурных слов» – «Словарь транслита», найдите и удалите букву из списка.
6. Далее переходите в «Настройки» — «Настройки продукта» – «Языковые параметры» – «Региональные настройки».
7. На открывшейся странице находите «ru» в столбце «Название» и щелкаете по нему один раз левой кнопкой мыши.
8. На открывшейся странице, в графе «Кодировка» пишите:
После чего сохраняете изменения нажатием на соответствующую кнопку.
После сохранения у вас (в административной части сайта и на самом сайте) могут появиться знаки вопроса – не пугайтесь, на данном этапе это нормальное явление.
9. Далее подключитесь к вашему сайту по FTP.
Смена кодировки Битрикса с windows-1251 в UTF-8 (utf8)
Случилось мне повозиться над сменой кодировки проекта на Битриксе с windows-1251 (cp1251) на UTF-8 (utf-8). Расскажу как всё прошло.
1. Резервные копии файлов и БД
Сначала сделать все резервные копии: файлов сайта и базы данных, чтобы откатиться, если что-то пойдёт не так. У меня «не так» пошло 🙂 и да резервные копии очень пригодились. Никогда не знаешь, чего ждать от битрикса.
2. php.ini и .htaccess
Попросить техподдержку вашего хостинга прописать в php.ini следующие строки (на REG.RU вы можете сами это сделать в папке php-bin/php.ini)
В файл /.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. Может такая ошибка выдаться при попытке запустить скрипт уже на сервере:
Надо просто убрать лишние невидимые символы , которые добавил 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. Установить модуль поиска и сделать переиндексацию
- http://rushstudio.by/blog/development/smena-kodirovki-bitriks-na-utf8/
- https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2919
- http://omelchuck.ru/nastrojka-mysql-dlya-raboty-s-utf8/
- http://owb-rotor.ru/2012/04/zametki-na-polyax-rekursivno-perekodiruem-fajly-v-papke-i-vlozhennyx-papkax-s-kodirovki-windows-1251-v-utf-8-utf8/index.html
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.