Как была выбрана позиция района Суррогатов (UTF-16)? - PullRequest
10 голосов
/ 03 марта 2011

Было ли выбрано случайное положение области суррогатов UTF-16 (U + D800..U + DFFF) или есть какая-то логическая причина, что она находится на этом месте?

Ответы [ 2 ]

6 голосов
/ 03 марта 2011

Суррогатная область была добавлена ​​в Unicode 2.0, чтобы расширить код за пределы 65536 кодовых точек при сохранении совместимости с существующим 16-битным представлением.Чтобы закодировать 20 битов, необходимых для представления 1048576 новых кодовых точек, им потребовалось 1024 символа, чтобы представить первые 10 бит, и 1024, чтобы представить вторые 10 бит (они использовали 2048 символов вместо 1024, чтобы обеспечить самосинхронизацию кода),Для эффективности распознавания символов было бы лучше, если бы все 2048 имели общий (двоичный) префикс.

Я могу только догадываться, что они хотели подтолкнуть этот необычно предназначенный блок к более высоким, чем более низким кодовым точкам.Блоки 0xE000–0xE7FF, 0xE800–0xEFFF и 0xF000–0xF7FF уже были зарезервированы для области «личного пользования», а 0xF800–0xFFFF также частично зарезервированы для частного использования и частично использованы для других кодов.Таким образом, 0xD800–0xDFFF был бы самым высоким доступным блоком.

2 голосов
/ 04 марта 2011

Unicode изначально проектировался как 16-битный код и уже назначил набор символов до того, как понадобятся & ldquo; дополнительные плоскости & rdquo; был признан. Самый большой доступный блок был U + A000 & ndash; U + DFFF, так что суррогатам придется пойти куда-то туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...