Меню Рубрики

Установка продукта в кодировке utf 8 битрикс

Что лучше utf-8 или cp1251 на новом сайте?

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

При инсталляции продукта 1С-Битрикс: Управление сайтом необходимо определиться с тем, нужно ли устанавливать флаг «Установить продукт в кодировке UTF-8».
Но как определиться!

В руководстве по установке написано: «Если вы планируете использовать несколько языков на вашем сайте, то вам следует установить продукт в международной кодировке UTF-8». Роберт Басыров в книге «1С-Битрикс: Постройте профессиональный сайт сами!» добавляет: » По поводу UTF-8 следует подумать. Если вы предполагаете, что на сайте возникает потребность в отображении разных языков, то поддержка этой кодировки необходима (например, если на форуме кто-нибудь напишет вам на испанском или немецком, без UTF-8 у вас могут не отразиться некоторые буквы).»
То есть, вывод такой, что при малейшем подозрении на необходимость в будущем, нужно ставить флаг UTF-8?
Возможно, хотя в настоящий момент я абсолютно не уверен в том, что будет использован язык иной, кроме русского. Например, предположим, на форуме будет обсуждение переводов книг или фраз иностранных авторов (китайских) на русский язык с приведением оригинальных цитат источника. Сразу ставить UTF-8 при установке? Или проще не сейчас, а как-то потом по мере появления надобности менять кодировку с cp1251 на utf-8?

Но, с другой стороны, в разных книгах попадаются фразы о том, что включение кодировки utf-8 имеет определённые недостатки. Из попавшейся мне на глаза информации:
1. Книга Елены Бенкен «PHP, MySQL, XML: программирование для Интернета»: Про MySQL и работу с phpMyAdmin «только обратите внимание, что при создании баз, таблиц и столбцов, вас всё время будут просить указать вариант сравнения данных (collation). Вполне разумно выбрать либо cp1251_general_ci… Ещё более перспективный вариант – выбор utf8_unicode_ci. Хотя в этом случае надо отдавать себе отчет в том, что строки в UTF8 занимают в два раза больше места, чем строки в однобайтной кодировке cp1251.»

Вот, фраза о том, что база в utf-8 занимает в два раза больше места, что мне, как пользователю, должна говорить в плане выбора тарифного плана хостинга?
Скажите по вашему опыту, примерно, для небольшого, преимущественно, текстового сайта на начальном этапе наполнения контентом (в несколько месяцев), тариф с каким дисковым пространством (и иными параметрами) для редакции «Стандарт», должен подходить?
Например, «Стандарту» с включённой кодировкой cp1251 нужно 300МB дискового пространства, а «Стандарту» с включённой кодировкой utf-8 нужно 600МB, так что ли надо понимать книгу, приминительно к 1С-Битриксу?

2. Далее, в той же книге про локальную установку MySQL и настройку файла my.ini автор пишет «измените и добавьте директивы, чтобы фрагмент файла имел вид:
default-character-set=cp1251
character-set-server=cp1251
init-connect=»SET NAMES cp1251″
skip-character-set-client-handshake».
Далее пишет: «две последние строки принудительно устанавливают кодировку cp1251 для всех запросов. Эти директивы позволяют создавать таблицы в кодировке cp1251 и благополучно выполнять запросы, используя русскоязычные строки. Но хотелось бы предостеречь от создания столбцов, таблиц и баз с русскими именами. Иначе в самых неожиданных местах вас подстерегают ошибки и некорректная обработка данных.»
Я не собираюсь создавать столбцы с русскими именами. Или же в utf-8 можно? Иначе, какой тогда смысл в этой кодировке, если она не универсальная.
Но, если я хочу развернуть базу в кодировке utf-8, нужно ли мне пытаться узнавать у хостера, нет ли у него в настройках файла my.ini каких-либо директив, которые могут свести на нет моё желание работы с кодировкой utf-8? Или мои опасения беспочвенны, потому, что я сам смогу изменить любые параметры на подходящим мне через файл .htaccess?

3. В другой книге, переводя иностранного автора, Денис Колиснеченко даёт примечание к авторскому тексту по настройке сервера MySQL на кодировку UTF-8: «Для нормальной поддержки русского языка лучше всего выбрать кодировку cp1251». Мне очень понравилось, как Денис Колиснеченко перевёл книгу, действительно, лучшего перевода я ещё не встречал. Но, что означает «нормальная поддержка русского языка» в cp1251, а что значит «ненормальная» в utf-8, я по тексту не обнаружил.

Читайте также:  Установка заземлителя и заземляющих проводников

Скажите, по вашему мнению, правильно ли будет понимать так, что, допустим, функция поиска по русскоязычным страницам сайта и содержимому форумов и элементов инфоблоков, однозначно, будет работать хуже, если кодировка utf-8, чем если кодировка cp1251? Или «подводные камни» не в функции поиска, а в чём-то ином, например, в получении данных от пользователя через его браузер при заполнении полей форм с сайта или, другой пример, проблемы в индексации страниц поисковыми машинами? В чём?

4. Если при установке 1С-Битрикс указн флаг «Установить продукт в кодировке UTF-8». То, в какой кодировке нужно создавать и сохранять текстовые файлы для шаблонов страниц и разделов, включаемых областей с расширением php, тоже в utf-8? Или в любой?
5. Если при установке 1С-Битрикс указать флаг «Установить продукт в кодировке UTF-8». То какую кодировку нужно указать в параметрах сайта, для формирования мета данных страниц для браузера пользователя, тоже utf-8? Или можно любую?

Понимаю, что много написал и отнял ваше время на чтение. Но, если кто-то хочет прояснить какие-то аспекты, то любая информация по поводу выбора utf-8 или cp1251 на новом сайте для меня будет интересна, поделитесь, пожалуйста.

источник

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

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

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

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

  1. Разные проблемы в процессе работы кода.
  2. Лишние действия при работе с кодом в текстовых редакторах.
  3. Отсутствие поддержки многих языков.
  4. Наличие ошибок в верстке сайта при его проверке через 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. Если на вашем сайте установлен модуль «Форум», вам необходимо удалить букву «ё» из словаря транслита. Для этого в левом меню перейдите по пути «Сервисы» – «Форумы» – «Фильтр нецензурных слов» – «Словарь транслита», найдите и удалите букву из списка.

Читайте также:  Установка 2jz на газ 3110

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

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

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

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

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

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

источник

Установка Битрикс в кодировке UTF8 и проблема с mbstring.func_overload

Петров Роман

Обновили на сервере PHP до версии 5.2.9 и обнаружили, что теперь в .htaccess не работает установка mbstring.func_overload =2
А вот и описание причины:

Цитирую — самое важное отсюда:

It’s not possible to change it in perdir configs anymore. Fix for bug
#43227 changed this. Apparently Rui forgot to document it..smile:)

Вот собственно и вся новость. Думаю, что она будет полезна многим и снимет ряд вопросов.
У себя будем откатываться назад на PHP 5.2.6

UPDATED:
подошло решение из комментариев. Принудительно включили глобально mbstring.func_overload =2, поставили по умолчанию кодировку 1251, а на нужных сайтах включили через .htaccess utf8.

Все ошибки пропали, все зеленым цветов в установке, начал устанавливать, все ок и тут на тебе:

кодировка полетела с этого шага. Попробовал прописать в .htaccess строчку:

У меня под Linux Ubuntu , такая же петрушка. Проанализировав кодировки инсталера и распакованного битрикса enca-ом выяснил, что при установки кодировка 7bit ASCII и поэтому все инсталер пишет по-русски, а после инсталяции файлы в CP-1251 а в meta теги стоит UTF-8. Вот собственно в чем проблема. Конвертация файлов должна помочь. Еще нужно проверить кодировку БД и таблиц.

PS:Конвертация не помогла, точнее она помогла, если открыть файл в gedit , то там вместо кракозябр нормальный русский текст, но вот на сайте почему-то все равно . вместо русского. Подскажите у всех файлы после инсталяции принимают кодировку 1251?

У меня Виртуальная машина Битрикс 4.3 столкнулся с подобной проблемой на PHP 5.3 и решил ее!

Писал в тех. поддержку следующее:

Доброго времени суток, на виртуальной машине Битрикс есть 2 сайта. Требуются следующие настройки:

Для сайта http://top.seoup.su/
mbstring.func_overload=0
mbstring.internal_encoding=utf-8

Для сайта http://seoup.su/
mbstring.func_overload=2
mbstring.internal_encoding=utf-8

mbstring.func_overload=0

Этот параметр нельзя настроить из .htaccess, начиная с версии php 5.3

Сделать разные настройки не получится.

Нужно выполнить следующие шаги, мне это помогло.

1. По умолчанию выставить mbstring.func_overload=0 в файле «/etc/php.d/custom/php.ini» если его нет, то создаем его! Внутри пишем

3. Убираем/закоментим на всякий случай определение в «.htaccess» в папке «/home/bitrix/www»

Теперь «Проверка системы» проходит без ошибок, и не показывается сообщение при свойствах или копировании компонента

источник

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

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

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

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

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

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

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

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. Установите модуль «Поиск» и сделайте переиндексацию.

14. Установить модуль «Веб-аналитика», если вы его использовали ранее.

источник

Установка Битрикс в кодировке UTF8 и проблема с mbstring.func_overload

Петров Роман

Обновили на сервере PHP до версии 5.2.9 и обнаружили, что теперь в .htaccess не работает установка mbstring.func_overload =2
А вот и описание причины:

Цитирую — самое важное отсюда:

It’s not possible to change it in perdir configs anymore. Fix for bug
#43227 changed this. Apparently Rui forgot to document it..smile:)

Вот собственно и вся новость. Думаю, что она будет полезна многим и снимет ряд вопросов.
У себя будем откатываться назад на PHP 5.2.6

UPDATED:
подошло решение из комментариев. Принудительно включили глобально mbstring.func_overload =2, поставили по умолчанию кодировку 1251, а на нужных сайтах включили через .htaccess utf8.

Или тогда прописать по умолчанию mbstring.internal_encoding на windows-1251, а в уникоде ставить уже правильный параметр .htaccess?

Но можно и наоборот: в php.ini mbstring.internal_encoding=utf-8, в .htaccess windows-1251. Тут все зависит от того каких сайтов больше utf-8 или нет

да, прикольно

Чтобы изменять режим работы mbstring «на лету» сейчас, можно делать так (при включенном overload 2 через .htaccess в корне):

При установки битрикса на хостинге возникает такая проблема: для установки продукта в кодировке UTF-8 необходимо установить библиотеку mbstring с параметрами mbstring.func_overload больше 2, mbstring.internal_encoding=UTF-8.

Если кто сталкивался, то решение простое: в файле .htaccess (в корне) за комментировано две строки, как раз нужных.

В конфигурации PHP включен, несовместимый с phpMyAdmin, параметр mbstring.func_overload. Для предотвращения возможной потери данных, данный параметр должен быть выключен!
предупреждение в пхпадмин.

сделано как в UPDATED у автора.

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

в итоге запутался и не понял
что вписать в php.ini

php_admin_value mbstring.func_overload 2
в httpd конкретного хоста

так и вписать — в конфигурацию виртуального хоста.

выложите фрагмент вашего конфигурационного файла и журнала ошибок веб-сервера

у вас используется http://www.suphp.org
suphp использует php-cgi, и не поддерживает php_admin value.

FreeBSD 8.2, Apache 2.2.17+Nginx, PHP 5.2.17(Fast-CGI), вылазят те же ошибки:

Попробовал раскомментировать в php.ini, результат тот же.

Перезапускал. Оказалось из домашней папки тянул настройки (home/xxxxx/data/php-bin/php.ini)

Решение через php.ini не нравится, так как на сервере крутится еще порядка 100 сайтов, которые удачно легли после изменения настроек, а из-за 1-го менять для всех.

Вырезки из http.conf (/usr/local/etc/apache22) для домена bitrix.site.ru

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

как вариант — смените хостинг.

— mbstring.func_overload >=2
— mbstring.internal_encoding UTF-8 Не установлен
Внимание! Сайт работал в однобайтовой кодировке, а конфигурация сервера рассчитана на кодировку UTF-8. Установите mbstring.func_overload=0 или mbstring.internal_encoding=ISO-8859-1

Все ошибки пропали, все зеленым цветов в установке, начал устанавливать, все ок и тут на тебе:

кодировка полетела с этого шага. Попробовал прописать в .htaccess строчку:

У меня под Linux Ubuntu , такая же петрушка. Проанализировав кодировки инсталера и распакованного битрикса enca-ом выяснил, что при установки кодировка 7bit ASCII и поэтому все инсталер пишет по-русски, а после инсталяции файлы в CP-1251 а в meta теги стоит UTF-8. Вот собственно в чем проблема. Конвертация файлов должна помочь. Еще нужно проверить кодировку БД и таблиц.

PS:Конвертация не помогла, точнее она помогла, если открыть файл в gedit , то там вместо кракозябр нормальный русский текст, но вот на сайте почему-то все равно . вместо русского. Подскажите у всех файлы после инсталяции принимают кодировку 1251?

У меня Виртуальная машина Битрикс 4.3 столкнулся с подобной проблемой на PHP 5.3 и решил ее!

Писал в тех. поддержку следующее:

Доброго времени суток, на виртуальной машине Битрикс есть 2 сайта. Требуются следующие настройки:

Для сайта http://top.seoup.su/
mbstring.func_overload=0
mbstring.internal_encoding=utf-8

Для сайта http://seoup.su/
mbstring.func_overload=2
mbstring.internal_encoding=utf-8

mbstring.func_overload=0

Этот параметр нельзя настроить из .htaccess, начиная с версии php 5.3

Сделать разные настройки не получится.

Нужно выполнить следующие шаги, мне это помогло.

1. По умолчанию выставить mbstring.func_overload=0 в файле «/etc/php.d/custom/php.ini» если его нет, то создаем его! Внутри пишем

3. Убираем/закоментим на всякий случай определение в «.htaccess» в папке «/home/bitrix/www»

Теперь «Проверка системы» проходит без ошибок, и не показывается сообщение при свойствах или копировании компонента

источник

Популярные записи

Добавить комментарий

Adblock
detector