Перейти к публикации

что лучше utf-8 или WINDOWS-1251


Рекомендованные сообщения

у меня возник такой вопрос-что лучше utf-8 или WINDOWS-1251 ? тут нашёл одну статью по этому поводу

я думаю что она многих заинтересует кто стоит с выбором что лучше.

Кодировки: windows-1251 против UTF-8

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

Итак, почему же до сих пор большинство разработчиков используют сp1251(windows-1251)? Это связано с рядом причин.

Во-первых, большинство php-разработчиков до сих пор разрабатывают свои программы под ОС Windows(как ни странно), где cp1251 является стандартной кодировкой и ее поддерживают все текстовые редакторы. Лично я работаю под Linux, поэтому этой причины использования cp1251 мне не понять :)... Хотя, в windows уже даже стандартный блокнот поддерживает utf8 с таким же успехом, как и cp1251.

Во-вторых, исторически сложилось так, что старые версии MySQL (до 4й) - некорректно работали с utf8. Причем операции с сортировками глючили аж до версии 4.1. Поэтому очень много продуктов, которые развивались в течение многих лет до сих пор остаются на cp1251, а новички берут с них пример.

В-третьих, как мы знаем - один символ кириллицы в cp1251 занимает 1 байт, а в utf8 - 2 байта. Как ни странно, многих это пугает :). Однако сомнения будут развеяны ниже.

Навскидку больше не смог найти причин использования cp1251.

(Есть еще одна "веская" причина: разработчики, привыкшие к работе в windows-1251 неохотно осваивают новую кодировку, "от которой одна головная боль". Но головная боль - от применения разных кодировок внутри одного проекта. Прим. Denvor )

А вот причины использовать utf8 даже искать не пришлось - они очевидны!

Во-первых, В кодировке UTF‑8 вы можете непосредственно включать в документ любые символы из всего набора Unicode. Старинные кодировки, такие как cp1251 или KOI8‑R (извинте, но они на самом деле уже старинные, ибо будущее за utf8 :)) предоставляли не более 256 символов, а в Unicode есть свыше 100 000 символов. Среди них - типографские знаки (тире, кавычки, многоточие, апостроф, неразрывный пробел, неразрывный дефис и пр.), специальные символы (№, §, ©, ‰, × и пр.), буквы с диакритическими знаками и лигатуры (é, è, Ü, Æ, ø, fi и пр.), символы почти всех существующих в мире алфавитов (α, Ω, א, ת,, 伲, 儻 и пр.), пиктограммы и значки (→, ■, ♥, ☺ и пр.) и множество других символов. Самое классное в этом всём это то, что все эти символы можно вставлять непосредственно в редакторе (из таблицы символов или с помощью горячих клавиш), что делает код куда более читабельным, нежели использование кракозяб вроде π - или π (альтернативы в cp1251).

Во-вторых, хочется оспорить то, что страницы на utf8 имеют гораздо больший размер, чем на cp1251. Символы ASCII(латиница, арабские цифры, знаки препинания и т.д.) занимают в utf8 всего один байт, так же как и в cp1251. Таким образом при создании страниц на латинице никаких увеличений в размере страниц не наблюдается. С кириллицей - согласен. Если документ содержит только буквы русского алфавита и никаких других символов (что, согласитесь, бывает достаточно редко, ибо без html-тегов не сильно обойдешься :)) - то в UTF‑8 он действительно станет в два раза больше. А если в нём, например, поровну русских и арабских букв - в UTF‑8 он будет в два раза меньше, чем, например, в cp1251. Чаще всего - основной вес страницы составляет не html-код, а всякого рода javascript, flash, картинки, css и т.д. Тем, кто заботится о «весе», следовало бы в первую очередь выкинуть из кода подстановки для тех символов, которым они не нужны, например, - для длинного тире или для неразрывного пробела (ой, как часто я вижу это в страницах новичков). Видим, что вместо 1 знака длинного тире мы пишем 6, вместо 1 знака неразрывного пробела мы пишем 5 знаков. И где же экономия? Действительно, иногда доходит до маразма - некто упирается: «Не буду делать страницы в UTF‑8, потому что они от этого увеличиваются» - а сам при этом ваяет код с жуткими атрибутами и подстановками, который без них мог бы быть в пять раз короче.

В-третьих, основное достоинство - это универсальность! Лично я не создаю свою CMS исключительно для русскоязычного сегмента рынка web-технологий. Благодаря utf-8 я могу создавать сайты без каких-либо переделок как для американцев, так и для немцев(с их буквочками вроде Ü), так и для арабов, так и для китайцев! И мне все равно, какой кодировка у них установлена, а какая нет, ибо Юникод у них установлен 100%.

В-четвертых, Юникод является стандартом для работы таких частоиспользуемых ныне фунций php, как json_encode/json_decode, а так же используемого в Ajax XHttpRequest. Причем, начиная с 6-й версии PHP Юникод станет стандартом почти для всех строковых функций.

(Практически все современные CMS, форумные движки и магазины переходят на поддержку UTF8, некоторые поддерживают только UTF (например, - форум phpBB 3+). Прим. Denvor)

И напоследок, многие ссылаются на то, что люди постепенно переходят на utf8 потому, что "кто-то умный сказал, что это хорошо". Соглашусь, кто-то умный это сказал уже давно, а именно - Консорциум W3C (кому-то эти 3 буквы что-то говорят? :)). И рекомендует он использовать для создания веб-страниц ни что иное, как utf8. Для тех, кто знает английский (а есть программисты, кто его не знает? :)) - можете почитать тут: www.w3.org/International/questions/qa-utf8-upgrade.en.php

Автор: Константин Юревич

Источник:php.webconsulting.by/2008/05/03/luchshaya-kodirovka-utf-8-vs-cp1251/

Ссылка на сообщение
Поделиться на других сайтах

хмм ну по идее все было и так ясно если знаешь что такое cp1251 и что такое utf8...

utf8 есть хорошо :) тоже так считаю так как вижу жизненно необходимой поддержку японских иероглифов на сайте.

utf8 интернационален он позволяет не меняя кодировки ваять сайт на любом языке мира.

позволяет пользователям сайта общаться на разных языках.

сейчас большая часть форумов уже перекочевала в utf8 и интеграция с ними тоже знаете вопрос не маловажный.

...большинство php-разработчиков до сих пор разрабатывают свои программы под ОС Windows(как ни странно), где cp1251 является стандартной кодировкой...

так это же Microsoft... наверно ещё есть php-разработчики которые пишут сайты только под IE :D со всякими JScript, VBScript которые не поддерживаются другими браузерами.

...а новички берут с них пример.

новички, новичка рознь... вы посмотрите что пишут в книжках изданных/переизданных в 2009-2010 году всяких самоучителях и учебниках, там до сих пор пишут про Netscape...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...