UTF-16
Us der alemannische Wikipedia, der freie Dialäkt-Enzyklopedy
UTF-16 isch ä Kodierung fyr Unicode-Zeiche, optimiert uff d hiffigscht gbrouchte Zeiche uss de „Basic multilingual plane“ (BMP).
UTF-16 wierd sowohl vum Unicode-Konsortium als au vun ISO/IEC 10646 definiert. Unicode definiert dobi e zuesätzlichi Semantik. Ä gnauer Vogleich findet ma im Anhong C vum Unicode-4.0-Standard. D ISO-Norm definiert witerhin ä Kodierung UCS-2, wue abr nuer 16-Bit-Darschtellunge vun de BMP erlaube tuet.
D BMP enthält d Unicode-Zeiche, wue derre Code im Breich U+0000 bies U+FFFF liege tuet. In dem Breich sin fyr UTF-16 Ersatz-Zeiche (ängl. surrogate characters) reserviert.
D Zeiche uss de BMP werre dobie direkt uff d 16 Bits vun ra UTF-16-Code-Unit abbildet. Unicode-Zeiche, wue de Code sich nit mit 16 Bit darschtelle losse tuet, blege zwey 16-Bit-Wörter (ängl: code units), wue sich uss so gnonnte Ersatzzeiche (ängl: surrogate character) wiä folgt zommesetze:
Bit 31 24|23 16|15 8|7 0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0 0 0 0 0 0 0 0|0 0 0 z z z z z|x x x x x x y y|y y y y y y y y| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
High-Surrogate (U+D800 ... U+DBFF)
|15 8|7 0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1 1 0 1 1 0 Z Z|Z Z x x x x x x| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Low-Surrogate (U+DC00 ... U+DFFF)
|15 8|7 0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1 1 0 1 1 1 y y|y y y y y y y y| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Dobie tuet gelte: ZZZZ=zzzzz-1.
Dorous ergibt sich de zuelässig Wertbreich fyr UTF-16:
zzzzz=00000 -> ä 16-Bit-Wort -> U+00xxxx onderschfalls: ZZZZ=0000..1111 -> zzzz=00001..10000 = U+01xxxx .. U+10xxxx
D beidi Ersatzzeiche werre in de Reihefolg High Surrogate Low Surrogate gsendet. S lasse sich somit Unicode-Zeiche bies zue U+10FFFF kodiere.
Bie de Ybertragung vun UTF-16-Date z. B. yber ä Netzwerk un biem Spychere uff Dateträger werre d beidi Bytes, uss denne ä 16-Bit-Wort bstih tuet, nochänonder ybertrage. Je noch de Byte-Reihefolg vun de Rechnerarchitektur werre s dobie in 'ra vun zwey unterschiedlichi Reihenfolge ogordnet. Dodurch ergebe sich zwey voschiedeni Kodierunge, wue als UTF-16BE (Big Endian) un UTF-16LE (Little Endian) bzeichnet werre:
UTF-16-Zeiche
Bit |15 8|7 0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |y y y y y y y y|x x x x x x x x| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
UTF-16BE-Kodierung
1. Byte 2. Byte |7 0| |7 0| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |y y y y y y y y| |x x x x x x x x| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
UTF-16LE-Kodierung
1. Byte 2. Byte |7 0| |7 0| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |x x x x x x x x| |y y y y y y y y| +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
Um diä Kodierunge unterscheide zue kinne, wierd empfohle, s Unicode-Zeiche U+FEFF (BOM, byte order mark), des fyr ä Leerzeiche mit Breiti Null un ohni Zeileumbruch stäht, on de Ofong vum Datestrom zue setze. Wierd des als U+FFFE – wue ä ugyltigs Unicode-Zeiche isch – empfange, denn bedetet des, dess d Bytereihefolg zwische Sender un Empfänger unterschiedlich sin un somit biem Empfänger d Bytes vun jedem 16-Bit-Wort votouscht werre miesse.
Bie de Umwondlung vun UTF-16-Strings in UTF-8-Bytefolge isch zue beachte, des d Ersatzzeiche (surrogates) zuärscht zue nem Unicode-Zeichecode zommegfasst werre miesse, bvor diä dann in ä UTF-8-Bytefolg umgwondelt werre kinne. (Beispiel uff de Bschriebung zue UTF-8).
[ändere] Ekschterni Syte
- Unicode Standard 4.0 Chapter 2 (PDF) General Structure. UTF-16 isch untr 2.5 Encoding Forms (S.20) definiert.
- Unicode TN12: UTF-16 for Processing
Luege au: UTF-7, UTF-8, UTF-32, Unicode, UCS