Планирую сам создать свой сайт и, в т.ч. рассматриваю возможность создания на основе продукта 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 на новом сайте для меня будет интересна, поделитесь, пожалуйста.
К сожалению, чёткого понимания темы у меня до сих пор не сложилось, проясните пожалуйста из собственного опыты и личных соображений, если можно, дайте ссылки по теме.
При инсталляции продукта 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 на новом сайте для меня будет интересна, поделитесь, пожалуйста.