Особенности обработки суррогатных пар в Unicode заключаются в том, что для кодирования одного символа используются две кодовые пары (4 байта). 1 Это необходимо для символов, находящихся за пределами базового диапазона Unicode. 1
Некоторые особенности обработки суррогатных пар:
- Специальный диапазон кодов. 1 Для суррогатных пар в таблице Unicode отведён диапазон от D800 до DFFF. 1 Если при преобразовании кодовой пары из байтового вида в шестнадцатеричный получается число из этого диапазона, то это суррогатная пара. 1
- Алгоритм кодирования. 1 Чтобы закодировать символ из диапазона 10000–10FFFF, нужно выполнить следующие шаги: 1
- Из кода символа вычесть 10000 (шестнадцатеричное). 1
- Получить число не больше FFFFF, занимающее до 20 бит. 1
- Ведущие 10 бит из полученного числа суммировать с D800 (начало диапазона суррогатных пар в Unicode). 1
- Следующие 10 бит суммировать с DC00 (тоже число из диапазона суррогатных пар). 1
- Получить две суррогатные пары по 16 бит. 1 Первые 6 бит в каждой такой паре отвечают за определение того, что это суррогат, а десятый бит в каждом суррогате отвечает за его порядок: если это 1, то это первый суррогат, если 0, то второй. 1
Части суррогатной пары не имеют никакого значения друг без друга. 2