Pull to refresh

Comments 16

а можно поподробнее — как UTF-8 позволяет кодировать больше кодепоинтов чем UTF-16?
Они же обе могут закодировать любой из них, или нет?

Всё не так-то просто. UTF-16 может закодировать значения от 0x0000 до 0xD7FF, от 0xE000 до 0xFFFF и от 0x10000 до 0x10FFFF. Под суррогатные пары, которые кодируют последний диапазон, отводится диапазон от 0xD800 до 0xDFFF. UTF-8 же просто кодирует все символы от 0x0000 до 0x10FFFF (стандартизировано до этого размера, чтобы всё было совместимо с UTF-16, хотя в реальности UTF-8 может иметь диапазон от 0x0000 до 0x7FFFFFFF)

Насколько я помню без гугла и вики - UTF-8 позволяет кодировать символы кодами произвольной длины, вроде как от 1 до 4 байт. А UTF-16 видимо всегда использует 2 байта.

Нет, и это боль utf-16. Нет гарантии что он занимает 2 байта на символ. Может и 4.

UTF-8 позволяет закодировать 2³¹ = 2147483648 значений. При этом максимальное значение будет записано 6 байтами:
11111101 10111111 10111111 10111111 10111111 10111111
Но стандарт Unicode искусственно ограничил длину кодов 4 байтами (2²¹ значений) — чтобы подогнать UTF-8 под возможности UTF-16.

В UTF-16 двумя байтами (одним словом) можно закодировать значения 0000..D7FF и E000..FFFF. Диапазон D800..DFFF (символов с этими кодами в Unicode не существует) используется для записи значений больше FFFF посредством суррогатных пар (двух слов на символ): первое слово пары использует диапазон D800..DBFF, второе слово DC00..DFFF — получаем 2²⁰ значений.
Таким образом, в UTF-16 можно закодировать лишь 2²⁰ + 2¹⁶ ‒ 2¹¹ = 1112064 значений.

Нет беловолосого с тёмной кожей. Дискриминация! </сарказм>

уфф, отлегло, спасиб.

Если добавить всё сразу, что же делать в следующих версиях? А так ещё в на 33 версии толерантных изменений есть задел.

Ну, гаголица вроде уже есть в юникоде, а вот, например, азбуки Теневиля нет до сих пор (если не ошибаюсь).

image

Кажется, это было бы более полезно с исторической точки зрения, а эмодзи какие-то… их же тьму можно выдумать, пределов нет. К чему это в шрифты включать, неясно.

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

У меня были мысли уж самому взяться и подать заявку на добавление всяких фонетические значков типа модификатора е, но тут появился другой человек (Кирк Миллер) и подал заявку на добавление этой и многих других букв (о которых я даже и не подозревал) в Cyrillic Extended-D (это уже будет не раннее Unicode 15.0).

Так что туда осталось добавить кириллические буквы L, Œ и Ⱶ (часть букв ю, ѥ, ѩ, ѭ, ꙓ, ꙗ и др.) и может быть ещё Ɨ и Ɉ - но я тут буду в затруднении найти хоть какие-нибудь подтверждающие материалы. А за пределы LGC я особо и не смотрю.

Так что это, подозреваю, из-за того что никто просто пока не берётся.

Да и без пива - идеальный смайлик для вздутия живота. 🤷🏻‍♂️

Живот не от пива, а для пива©

Т.е. осталось около 900.000 символов в юникод-16.

лет на 100 только и хватит.

когда пространство закончится, расширятся до юникод-8, или сразу 16-32 байтную запилят?

Sign up to leave a comment.

Other news