16-битное кодирование, в котором все биты сопоставлены с некоторым значением - PullRequest
0 голосов
/ 06 ноября 2018

UTF-32 имеет последние обнуленные биты. Насколько я понимаю, UTF-16 тоже не использует все свои биты.

Существует ли 16-битное кодирование, в котором все битовые комбинации отображаются на какое-то значение, предпочтительно подмножество UTF, например ASCII для 7-битного?

1 Ответ

0 голосов
/ 06 ноября 2018

UTF-32 имеет последние обнуленные биты

Это может быть не правильно, в зависимости от того, как вы считаете. Обычно мы считаем слева, поэтому старшие (т.е. первые) биты UTF-32 будут равны нулю

Насколько я понимаю, UTF-16 тоже не использует все свои биты

Это тоже не правильно. UTF-16 использует все свои биты. Просто диапазон [0xD800—0xDFFF] зарезервирован для суррогатных пар UTF-16 , поэтому этим значениям никогда не будет назначен какой-либо символ и они никогда не появятся в UTF-32. Если вам нужно кодировать символы вне BMP с помощью UTF-16, то эти значения будут использоваться

Фактически Unicode был ограничен U + 10FFFF только из-за UTF-16, хотя UTF-8 и UTF-32 сами по себе могут представлять до U + 7FFFFFFF и U + FFFFFFFF соответственно. Использование суррогатной пары делает невозможным кодирование значений больше 0x10FFFF в UTF-16

См. Почему Unicode ограничен 0x10FFFF?

Существует ли 16-битное кодирование, в котором все битовые комбинации отображаются на какое-то значение, предпочтительно подмножество UTF, например ASCII для 7 бит?

Во-первых, не существует такого понятия, как «подмножество UTF», поскольку UTF - это не набор символов, а способ кодирования кодовых точек Unicode

До существования UTF-16 Unicode был фиксированный 16-битный набор символов, закодированный с помощью UCS-2 . Так что UCS-2 может быть ближайшим к вам, который кодирует только символы в BMP. Другие фиксированные 16-битные не-Unicode-кодировки также имеют кодировку, которая отображает все битовые комбинации на некоторые символы

Однако зачем тебе это? UCS-2 давно устарела. Некоторые старые инструменты и менее опытные программисты все еще подразумевают, что Unicode всегда 16-битный, как тот, который является правильным и нарушит современную обработку текста

Также обратите внимание, что не все значения ниже 0xFFFF назначены, поэтому никакое кодирование не может сопоставить каждое 16-битное значение с кодовой точкой Unicode

Дальнейшее чтение

...