Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

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

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

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

7 Ответы

00 голосов
в дальнейшем при обновлении системы utf-8 будет необходим...  мне пришлось сделать запрос в БД на перевод всех таблиц и БД в целом в кодировку utf-8
ответил 12 Окт, 13 от аноним
00 голосов
Используйте utf-8 и больше не раздумывайте по этому поводу. Utf-8 скоро станет стандартом в веб.

Что касается
Цитата
По поводу UTF-8 следует подумать

то это объясняется тем, что битрикс изначально проектировался на CP1251, а сейчас, когда реальность заставляет, пришлось "прилепить" поддержку utf8. Именно прилепить. Поэтому я бы не стал доверять битриксу работать с кодировкой utf8, но это уже мое субъективное имхо.

К примеру, все ведущие CMS работают на utf8. Typo3, Drupal - это все utf8, и все это замечательно работает.

Если пишите проект с нуля - тоже используйте utf8. Даже создатель CP1251 - Miscrosoft, впоследствии сделала выбор в пользу utf8. А это о чем-то да говорит.
ответил 21 Окт, 13 от Cavizar (220 баллов)
00 голосов
Однозначно следует использовать UTF-8, и не стоит сомневаться насчет битрикса. Все работает нормально.
ответил 24 Янв, 14 от Dakost (580 баллов)
00 голосов
Цитата
Иван Буранов пишет:
все ведущие CMS работают на utf8. Typo3, Drupal - это все utf8


Это как Вы оцениваете указанные CMS как ведущие? ведущие в чем?
ответил 13 Май, 14 от Biks (460 баллов)
00 голосов
Цитата
Алексей Комаров пишет:
Или проще не сейчас, а как-то потом по мере появления надобности менять кодировку с cp1251 на utf-8?


Маленькое замечание. Это действие будет невозможным после того, как вы уже выбрали кодировку. То есть принятие решения о кодировке должно быть ДО инсталляции дистрибутива.
ответил 09 Сен, 14 от Merigold (460 баллов)
00 голосов
Цитата
Иван пишет:
Это как Вы оцениваете указанные CMS как ведущие? ведущие в чем?


Ведущие хотя бы потому, что используют utf8 =)

А если серьезно, то по большому ряду причин. Комплексно, понимаете? Нет аналогов, что тоже немаловажно. Комьюнити, расширяемость...

Это естественно, выбор CMS - чисто субъективный. Но среди CMS, как и везде, есть лидеры и есть нелидеры. Лидеры - вышеназванные, общепринятые.

В конце-концов, не джумлу ведь сюда в этот список включать.
ответил 15 Янв, 15 от Cavizar (220 баллов)
00 голосов
Коенчно DRUPAL и Typo3 - ведущие. Могу поспорить, что Ві нестаниет спорить)
ответил 01 Май, 15 от Tetis (500 баллов)

Похожие вопросы

0 голосов
6 ответов
спросил 06 Окт, 13 от ErickJ (120 баллов)
0 голосов
3 ответов
спросил 13 Март, 14 от hencok (180 баллов)
0 голосов
4 ответов
спросил 11 Янв, 14 от Ashihei (100 баллов)