Comments: |
Нафига пользоваться то utf16 ? есть же utf8, который без таких дурацких проблем.
Н-да? А Вы знаете, что, чтобы виндовый вордпад воспринял текст как находящийся в utf-8, он должен начинаться с EF BB BF? Мне бы никогда не пришло в голову закодировать Byte Order Mark в utf-8, однако же нашлись светлые головы. :-( ... В полутенях сиреневых, в закатной дымке алой ...
Да в общем не очень страшно, потому что: UTF16-1(UTF16(X)+UTF16(Y)) == X+Y Как насрали, так и убрали.
... Световодозвуконепроницаемость! ...
от этого только хуже ! получается что оператор UTF16^-1(.) отображает счётное множество прообразов на один образ ! и получается что он НЕОБРАТИМ !!!
Аналогия -- представьте себе цепочки десятичных цифр, которые представляют натуральные числа почти традиционным образом: при преобразовании в новую нотацию перед числом приписывается незначащий ноль, при сложении двух цепочек количество ведущих нулей в слагаемых суммируется. То есть 02+003=0005. Я пока не придумал, какая от этой нотации может быть польза, но она строго ничем не хуже традиционной. Дурацкая только. :-( Ну да, на самом деле это дикий способ записать двухкомпонентный вектор, но можно сделать вид, что мы этого не заметили. ... А травы останавливают время ...
Это не два байта, это один символ - 0xFEFF. Соответственно, закодирован он может быть либо как 0xFF 0xFE (на интелах и подобиях), либо как 0xFE 0xFF (на нормальных процессорах). Для этого его и пишут, чтобы можно было однозначно опознать, каким образом в данной последовательности байт следует преобразовывать байты в шестнадцатибитные значения.
Кроме того, следует заметить что 16 бит для Unicode - мало. Я вот не помню, каким образом в UTF-16 кодируются символы с кодами больше 65535, но какие-то многосимвольные последовательности для этой цели там употребляются. В общем, UTF-16- самый ублюдский из способов кодирования Unicode. Хуже даже, чем UTF-7. Надо пользоваться либо utf-8, либо wchar_t *, (заметим что sizeof(wchar_t) на нормальных системах -4).
так что вы мне там говорили про то что переключатели кодовых страниц это зло и текст должен быть в ЧИСТОМ ВИДЕ ?
каким образом в UTF-16 кодируются символы с кодами больше 65535
Да в общем в рамках постановки задачи довольно разумным. Другое дело, что такая задача вообще не должна была возникать. А ещё мне интересно, что будут делать разные системы, встретив символ с кодом больше 65535, закодированный не прямо в utf-8, а в два символа utf-16, каждый из которых отдельно закодирован в utf-8. И ещё мне интересно, когда питон будет по умолчанию поставляться с 32-битным юникодом (выбор между 16 и 32 делается ключиком компиляции, но, насколько я знаю, все дистрибутивы собирают с 16. Боюсь, что 32 просто недостаточно протестирован, и, если перейти на него, вылезут какие-нибудь баги). А самая беда в том, что две реально самых популярных платформы -- win32 и java -- заложились на utf-16.
... Полная победа сил Добра над силами Разума ...
| |