cp1251 VS utf-8

Discussion in 'PHP' started by .:EnoT:., 6 Nov 2008.

?
  1. cp1251

    17 vote(s)
    29.3%
  2. utf-8

    41 vote(s)
    70.7%
  1. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    да никакой это не наглядный пример.
     
    2 people like this.
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Нету. Только латиница и утф8. Других стандартов нету. Поэтьому если хочешь кириллицу - то утф8 единственный вариант.

    Это пример того, как цену за трафик устанавливают операторы.
    С учетом рубля за смс мегабайт стоит 7.5т.р.

    Больше это не служит накаким примером. Хватит путать желтое с говенным.
     
    1 person likes this.
  3. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    всегда использую cp1251 и на никсах и на винде, просто привычка)))
     
  4. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Да неужели?
    2Егор перекодируй форум, а то я переключил на единственный вариант UTF8 и вижу вот это:
    Code:
    ������� �������
    (�������������: 10) 
    ����������: Dimi4, LoneWolf666 
    ����: ������� ������� ��������� ����. �������� ����� �����.
    �� �����������: �������
     
  5. Twoster

    Twoster Members of Antichat

    Joined:
    20 Aug 2008
    Messages:
    287
    Likes Received:
    402
    Reputations:
    159
    Кроме перечисленных плюсов UTF-8 есть еще один - это единственная кирилическая кодировка, которую нормально поддерживают все типы мобильных телефонов. Поэтому для wap'a она используется по умолчанию!
     
  6. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Это не кириллическая кодировка - это вариант кодирования UNICODE (одна из форм представления UNICODE).
    Любая форма представления юникода (UTF) включает в себя и кириллические символы, прочем как и все остальные...
    В мобилы проще было встроить поддержку юникода, чем заморачиваться с кучей национальных кодировок, что и было сделано.
    Один выстрел - и куча дохлых зайцев!.
    P.S. Конечно будущее в унификации, за UTF!
    P.P.S. Вообще, для общения лучше использовать промежуточный язык по типу транскрипции в английском, чтоб писали звуками, а из этого будет уже понятно на каком языке идёт разговор, набор звуков ограничен, можно даже комп научить использовать эти кирпичики и при этом его произношение будет понятно человеку, причём любой нации, на любом языке...

    Вывод: если нужен только русский + латиница (либо один национальный + латиница) лучше юзать однобайтовые кодировки (типа 1251, содержащая символы кириллицы). Если нужна поддержка многих языков (более двух) то лучше использовать варианты представления unicode (UTF)
     
    #46 -=lebed=-, 7 Nov 2008
    Last edited: 7 Nov 2008
  7. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Чем лучше?

    Пока знаем только, чем хуже. А чем лучше, ты не потрудился придумать/объяснить.
     
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Я уже объяснял в постах выше, велкам ту /thread90784.html и ответьте мне на вопрос...
     
  9. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Нет, т.к. я не согласен с теми "объяснениями", могу их опровергнуть(насчет размера). Еще доводы или "доводы" будут?)
     
  10. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Ты хочешь опровергнуть очевидные факты, что текст в кириллице занимает 2 байта в UTF8 против одного в CP1251?
    P.S. Ты кстате, ответил мне в той теме?
    P.S.S. Человек, не уважающий мнение другого (и не только мнение, а самого оппонента), а так же не предоставивщий никаких аргументов против, не заслуживает внимания для продолжения дискусии по данной теме...
    Вспомнилcя анекдот:
    - Чем лучше?
    - Лучше чем другие...
    CLOSED! (Only for me, ты не подумай... ;) )
     
  11. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    А документ у тебя только из кириллицы состоит? У меня нет. У меня в нем есть еще латиница и другие символы.

    Ну я сделал исключение и говорил с тобой, хоть согласно твоим принципам ты и не заслуживал моего внимания(ты сам это написал ;))

    Доводы я предоставил. В т.ч. и не я(ссылка на хабр). Ты не слушаешь) Ну и ладно, хорошо, что больше не напишешь в этой теме)
     
  12. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Идеологическая борьба между сторонниками cp1251 и utf8 длится уже давно. Сам не раз сталкивался с разногласиями между разработчиками по поводу того, какую кодировку использовать. Захотелось наконец расставить точки над “и”. Причем хочется все достаточно хорошо обосновать, чтобы не возникало сомнений в моей голословности.



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

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

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

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

    Навскидку больше не смог найти причин использования cp1251.
    А вот причины использовать 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 Юникод станет стандартом почти для всех строковых функций.

    И напоследок, многие ссылаются на то, что люди постепенно переходят на 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/
     
    2 people like this.
  13. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Не ожидал что тема превратится в такой спор)))

    Если судить по себе..то когда я ещё не работал с юникодом, делал всё только в ср1251 и меня бы спросили что я предпочитаю...я бы сказал ср1251, а про юникод знать не знаю...и началось всё с того что я решил покопаться в одном забугорном движке, который поддерживал только ср1252 (западноевропейская).
    Кто-то говорил что нужно перекодировать базу данных при переводе на юникод....это исправляется одним запросом SET NAMES UTF8...правятся скрипты...но и это тоже не вызывает никаких проблем...
    поэтому опять же судя по себе...возможно многие ещё сидят на ср1251 потому что не пробовали или не хотят пробовать с ней работать...поэтому утверждают что 1251 лучше...

    Поработайте с UTF, поймёте что она универсальней :)

    советую ещё почитать статью http://webmastak.com/article.aspx?id=300
     
  14. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Я Действительно не пробовал, поэтому сказал что 1251 лучше, пойду переводить движок на утф8:)
     
  15. vikseriq

    vikseriq Elder - Старейшина

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Собственно, за юникодом-ютфой будующее, но есть но: на моих системах однажды что-то ютф8 глюканул - "И", "Г" и "г" стали буказябрами. И бороться с этим никак не получилось. так что хорош-то хорош, но если глюк - то облом.

    ЗЫ подскажите кто, как исправить мою траблу. желательно пишите в лс - не мутите топик )
     
  16. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    фу таким быть.
     
  17. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Я просто не знаю КАК? надо файлы сохранять по другому, или просто при подключении к бд и в заголовках?
     
  18. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    файлы сохраняешь не в ANSI, а в UTF и всё...базу можешь оставить в cp1251 (ну лучше конечно перевести на юникод...но перекодировать заебёшься)....ну и при подключении к базе использовать кодировку utf...вот и всё )) ничего сложного.
     
    1 person likes this.
  19. vikseriq

    vikseriq Elder - Старейшина

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Аха, потом зайти в пхпмайодмин и увидеть вместо свежего поста кракозыбры ) (бывает - браузер кодировки смешанные не любит.)
     
  20. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    ничё подобного...если ты будешь заносить данные в нужной кодировке ничего подобного не будет