UTF-16: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
оформление
Строка 1:
'''UTF-16''' ({{lang-en|Unicode Transformation Format}}) в [[Информатика|информатике]] — один из [[набор символов|способов кодирования]] символов из [[Юникод]]а в виде последовательности 16-[[бит]]ных слов.
Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и U+E000..U+10FFFF (общим количеством 1 112 064{{число|1112064}}).
При этом каждый символ записывается одним или двумя словами (суррогатная пара).
 
Строка 7:
== История появления ==
 
Первая версия Юникода (1991 г.) представляла собой 16-битную кодировку с фиксированной шириной символа; общее число разных символов было 2<sup>16</sup> (65 536{{число|65536}}). Во второй версии Юникода (1996 г.) было решено значительно расширить кодовую область; для сохранения совместимости с теми системами, где уже был реализован 16-битный Юникод, и была создана UTF-16. Область 0xD800—0xDFFF, отведённая для суррогатных пар, ранее принадлежала к области «символов для частного использования».
 
Поскольку в UTF-16 можно отобразить {{math|2<sup>20</sup>+2<sup>16</sup>−2048}} (1 112 064{{число|1112064}}) символов, то это число и было выбрано в качестве новой величины кодового пространства Юникода.
 
== Принцип кодирования ==
Строка 74:
Функция <tt>LoWord()</tt> возвращает младшее слово от 32-битного целого (старшие биты не глядя отбрасываются).
 
<source lang="pascal">
<pre>
// Допустимые значения Code: $0000..$D7FF, $E000..$10FFFF.
Procedure WriteUTF16Char(Code: UInt32)
Строка 87:
End If
End Procedure
</presource>
 
=== Раскодирование ===
Строка 96:
<tt>Error()</tt> прерывает выполнение (по сути [[Обработка исключений|исключение]]).
 
<source lang="pascal">
<pre>
// В случае успеха возвращаются значения
// в диапазонах $0000..$D7FF и $E000..$10FFFF.
Строка 120:
End If
End Function
</presource>
 
== Ссылки ==