**UTF-16** (16-bit Unicode Transformation Format) adalah suatu pengkodean karakter Unicode yang mampu mengkodekan 1,112,064 angka (disebut *code point*) dalam jangkauan kode Unicode dari 0 sampai 0x10FFFF. Pengkodean ini adalah sebuah "variable-width encoding" karena code point itu dikodekan dengan satu atau dua *code units* 16-bit .

Universal Character Set **UCS-2** (2-byte) mirip dengan pengkodean karakter yang sekarang digantikan oleh UTF-16 versi 2.0 sebagai standar Unicode pada bulan Juli 1996. Menghasilkan format dengan panjang tetap (*fixed-length format*) hanya menggunakan code point sebagai unit kode 16-bit dan membuahkan hasil yang tepat sama dengan UTF-16 untuk 97% (63.488; bukan 65.536) dari seluruh code point dalam jangkauan 0-0xFFFF, termasuk semua karakter yang telah diberi nilai saat itu.

UTF-16 secara resmi didefinisikan dalam Annex Q dari standar internasional ISO/IEC 10646. Juga disebut sebagai "The Unicode Standard" versi 2.0 atau lebih tinggi, serta dalam IETF's RFC 2781.

Contoh
------

| code point | glyph\* | character | UTF-16 code units (hex) | UTF-16BE code units (hex) | UTF-16LE code units (hex) |
| --- | --- | --- | --- | --- | --- |
| U+007A | z | LATIN SMALL LETTER Z | 007A | 00, 7A | 7A, 00 |
| U+6C34 | 水 | CJK UNIFIED IDEOGRAPH-6C34 (water) | 6C34 | 6C, 34 | 34, 6C |
| U+10000 | 𐀀 | LINEAR B SYLLABLE B008 A (first non-BMP code point) | D800, DC00 | D8, 00, DC, 00 | 00, D8, 00, DC |
| U+1D11E | 𝄞 | MUSICAL SYMBOL G CLEF | D834, DD1E | D8, 34, DD, 1E | 34, D8, 1E, DD |
| U+10FFFD | 􏿽 | PRIVATE USE CHARACTER-10FFFD (last Unicode code point) | DBFF, DFFD | DB, FF, DF, FD | FF, DB, FD, DF |

*\* Appropriate font and software are required to see the correct glyphs.*

### Contoh prosedur pengkodean UTF-16

Karakter pada code point U+64321 (hexadecimal) akan dikodekan dalam UTF-16. Karena di atas U+FFFF, harus dikodekan dengan *surrogate pair*, sebagai berikut:

```
v  = 0x64321
v′ = v - 0x10000
   = 0x54321
   = 0101 0100 0011 0010 0001
vh = v′ >> 10
   = 01 0101 0000 // higher 10 bits of v′
vl = v′ & 0x3FF
   = 11 0010 0001 // lower  10 bits of v′
w1 = 0xD800 + vh
   = 1101 1000 0000 0000
   +        01 0101 0000
   = 1101 1001 0101 0000
   = 0xD950 // first code unit of UTF-16 encoding
w2 = 0xDC00 + vl
   = 1101 1100 0000 0000
   +        11 0010 0001
   = 1101 1111 0010 0001
   = 0xDF21 // second code unit of UTF-16 encoding
```

Lihat pula
----------

* Pengkodean karakter
* Unicode
* UTF-8

Referensi
---------

1. ↑  {\displaystyle 2^{16}-2\times 2^{10}+2^{10}\times 2^{10}}, di mana {\displaystyle 2^{16}} adalah BMP, {\displaystyle -2\times 2^{10}} adalah interval U+D800–U+DFFF, dan {\displaystyle 2^{10}\times 2^{10}} adalah level (*plane*) tertinggi.
2. ↑  "Questions about encoding forms". Diakses tanggal 12 November 2010.
3. ↑  ISO/IEC 10646-1:2000(E), pp. 890-892; ISO/IEC 10646:2003(E), pp. 1364-1366; ISO/IEC 10646:2012(E) Final Committee Draft (FCD), p. 2208; The FCD contains a reference to clauses 9 and 10, pp. 15-17.

Pranala luar
------------

* A very short algorithm for determining the surrogate pair for any codepoint
* Unicode Technical Note #12: UTF-16 for Processing
* Unicode FAQ: What is the difference between UCS-2 and UTF-16?
* Unicode Character Name Index
* RFC 2781: UTF-16, an encoding of ISO 10646
* java.lang.String documentation, discussing surrogate handling

Templat:Unicode navigation
Templat:Character encoding