Ну реши мне проблему общения с китайцами и японцами без юникода. Предлагаешь запилиться в своём маленьком мирке и забыть о всего, что не умещается в KOI8-R?
>Вот, человек даже не знает, что 2-х байтов уже давно не хватает.
Спасибо, что раскрыли мне глаза. Теперь я и подавно против юникода! Я не против и 20 байт, если это будет у всех, а если только у второсортных, то идите вы с вашим utf-* в зад.
предложите более простое решение. пока что ваше утверждение звучит как: "теория вероятностей не нужна. потому, что простые проблемы нужно решать просто"
Всем вещающим про 2 байта: почитайте, что такое utf-8. Вообще-то она отводит от 1 до 4 байтов на символ.
1. Достоинства: максимму 4 байта на символ -- это более чем может понадобиться человечеству в ближайшие тысячелетия, т.е. софт, использующий utf8 не будет иметь проблем с локализацией
2. Недостатки: из-за особенности организации utf8, текст приходится рассматривать как связанный список, а не массив байтов. В результате -- замедление программ, использующих поиск по тексту (особенно регулярных выражений), _на_порядки_
утф8 как кодировку юникода придумали именно люди, придерживающиеся простого подхода (и даже написавшие две просто устроенные ОС - юникс и план9) - Кен Томпсон и Роб Пайк
Вообще, юникоды та еще мерзость, потому что имеют достаточно сильный внутренний конфликт представления (написания символа) и содержания (значения символа). Из этого с одной стороны вытекли проблемы с гомографичными символами в IDN и, с другой стороны, этого вытек дискурс с унификацией Хань.
Но лучших вариантов (включая распространенность), увы, никаких.
у меня koi8-r. переходить на utf-8 не собираюсь никогда:
* 2-х байтные кодировки мне ненужны
* экономия дискового пространства
использование 2-х байтных кодировок оправдано только там, где требуется набивать тексты на 3-х или большем кол-ве языков одновременно.
а там где 2 языка или 1 достаточно и однобайтовой кодировки.
я, конечно, понимаю что xml и всё что на нём по стандарту использует utf-8, но это не аргумент чтобы выбирать локалью utf-8
ибо, в случае необходимости, можно на ходу конвертировать отдельные участки текста или конвертнуть итоговый файл
а также vim + :e ++enc=utf-8
Юникод не православен:
Некоторые системы письма всё ещё не представлены должным образом в Юникоде. Например, отсутствуют некоторые буквы традиционной письменности церковнославянского языка. Эта письменность содержит много дополнительных графических элементов (такие, как титла и выносные буквы). Изображение «длинных» надстрочных символов, простирающихся над несколькими буквами, пока не реализовано.
алсо:
An alternative way, pursued by people like Chu Bong-Foo, uses an encoding which provides information on the components of Han characters. For example, a 1991 Chinese computing system by Chu already provides 60,000 Han characters support, and takes up only 80KB memory space for the generation of glyphs from raw Cangjie codes. Their argument against Unicode is that the Unicode approach to Han characters is the same as assigning every English word a separate code.
Например простое решение - 4-х байтные кодировки тогда, когда это надо, однобайтные кодировки для большинства языков, 2-х байтные кодировки для иероглифов.
Все ивращения с акцентами, суррогатными символами и прочим в кодировке не нужны. Те же ударения нужны только в текстовых процессорах, на форумах я видел людей, ставящих ударения, раза 2 в жизни. Хотя ́ юнико ́д их вполне ́ подде ́рживает.
Почему не использовать 4 байта для всего? Очень просто. Хотим мы этого или нет, но подавляющее большинство текстов (включая, к примеру, тексты программ) написаны латинницей, использовать в 4 раза больше места - просто глупо.
> 2. Недостатки: из-за особенности организации utf8, текст приходится рассматривать как связанный список, а не массив байтов. В результате -- замедление программ, использующих поиск по тексту (особенно регулярных выражений), _на_порядки_
Прямая индексация букв нужна очень редко. В классических алгоритмах поиска по регулярным выражениям концепция связанного списка вполне подходит. То, что grep, perl и прочие не используют нормальные алгоритмы - сугубо их проблемы.
> Например простое решение - 4-х байтные кодировки тогда, когда это надо, однобайтные кодировки для большинства языков, 2-х байтные кодировки для иероглифов.
Все ивращения с акцентами, суррогатными символами и прочим в кодировке не нужны. Те же ударения нужны только в текстовых процессорах, на форумах я видел людей, ставящих ударения, раза 2 в жизни. Хотя ́ юнико ́д их вполне ́ подде ́рживает.
Почему не использовать 4 байта для всего? Очень просто. Хотим мы этого или нет, но подавляющее большинство текстов (включая, к примеру, тексты программ) написаны латинницей, использовать в 4 раза больше места - просто глупо.
>набери мне текст на немецком и русском (всего два языка, не три) и
>сохрани его в любой однобайтовой кодировке на выбор
%enca -g test
KOI8-R Cyrillic
LF line terminators
%cat test
Nachpruefung
проверка
Гм.. Меня как пользователя юникод устраивает на 110%. Вот только мне, как программисту, которому часто приходится работать со строками, хочется это делать правильно. Есть у меня такая дурацкая привычка - чтобы программа работала 100% правильно, обрабатывала все возможные ситуации. В случае с юникодом, приходится обрабатывать все эти акценты и прочее.
> 2. Недостатки: из-за особенности организации utf8, текст приходится рассматривать как связанный список, а не массив байтов. В результате -- замедление программ, использующих поиск по тексту (особенно регулярных выражений), _на_порядки_
В биореактор, быдло! Почитай что такое регулярные выражения, осознай что они могут работать хоть с потоками данных, а потом уже загазовывай помещение.
Кроме того, даже если взять PCRE, которые нерегурярны, то там все равно надо только или «бегать» по строке вперед-назад или запоминать позицию. Обе этих вещи UTF-8 никак не портит.