Была ли выбрана позиция суррогатной области UTF-16 (U + D800..U + DFFF), или у нее есть логическая причина, что она находится на этом месте?
Как было выбрано положение Суррогатной зоны (UTF-16)?
Ответ 1
Суррогатная область была добавлена в 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
Unicode был первоначально разработан как 16-разрядный код и уже присвоил кучу символов, прежде чем необходимость в "дополнительных самолетах" была распознан. Самый большой доступный блок - U + A000 – U + DFFF, поэтому суррогаты должны были бы куда-то туда добраться.