UTF-16
DC00 | … | DFFE | DFFF | |
---|---|---|---|---|
D800 | 010000 | … | 0103FE | 0103FF |
D801 | 010400 | … | 0107FE | 0107FF |
… | … | |||
DBFF | 10FC00 | … | 10FFFE |
UTF-16 (англ. Unicode Transformation Format) в інформатиці — один із способів кодування символів із Unicode у вигляді послідовності 16-бітових слів. Символи з кодами менше 0x10000 (216) представляються як є, а символи з кодами 0x10000-0x10FFFF — у вигляді послідовності двох 16-бітових слів, перше з яких лежить в діапазоні 0xD800-0xDBFF, а друге — 0xDC00-0xDFFF. Зрозуміло, що є 210 * 210 = 220 таких комбінацій.
Слід зазначити, що за стандартом ніякі символи не можуть мати коди власне з діапазону 0xD800-0xDFFF (їх 2048, вони відзначені рудим і блакитним кольорами на діаграмі), так що розшифровка кодування завжди однозначна. Певна частина текстів у UTF-16 є просто послідовністями символів з UCS-2 (BMP), тому що символи Unicode після коду 0x10000 використовуються не дуже часто.
Перша версія Юнікоду (1991 р.) була 16-бітною системою кодування з фіксованою шириною символу; загальне число різних символів було 216 (65 536). У другій версії Юнікоду (1996 р.) було вирішено значно розширити кодову область; для збереження сумісності з тими системами, де вже був реалізований 16-бітний Юнікод, і була створена UTF-16. Область 0xD800-0xDFFF, відведена для сурогатних пар, раніше належала до області «символів для приватного використання». Оскільки в UTF-16 можна відобразити 220 + 216 — 2048 (1112064) символів, то це число й було обрано новою величиною кодового простору Юнікоду.
Один символ кодування UTF-16 поданий послідовністю двох байтів. Який із двох йде попереду, старший або молодший, залежить від порядку байтів. Систему, сумісну з процесорами x86, називають UTF-16LE (little endian), а з процесорами m68k і SPARC — UTF-16BE (big endian).
У API Win32, поширеному в сучасних версіях операційної системи Microsoft Windows, є два способи представлення тексту: у формі традиційних 8-бітних кодових сторінок, і у вигляді UTF-16. У файлових системах NTFS, а також FAT з підтримкою довгих імен, імена файлів записуються в UTF-16LE.
- Unicode Technical Note #12: Обробка UTF-16 [Архівовано 3 грудня 2021 у Wayback Machine.] (англ.)
- Unicode FAQ: У чому різниця UCS-2 і UTF-16? [Архівовано 11 січня 2011 у Wayback Machine.] (англ.)