サロゲートのエンコーディングは、符号位置を C P {\displaystyle CP} 、ハイサロゲートを H S G {\displaystyle HSG} 、ローサロゲートを L S G {\displaystyle LSG} とすると次の通りに計算する。 H S G = f l o o r ( C P − 10000 16 400 16 ) + D 800 16 {\displaystyle HSG=\mathrm {floor} \left({\frac {CP-10000_{16}}{400_{16}}}\right)+{\rm {D800}}_{16}} L S G = ( C P − 10000 16 ) mod 4 00 16 + D C 00 16 {\displaystyle LSG=\left(CP-10000_{16}\right){\bmod {4}}00_{16}+{\rm {DC00}}_{16}}
デコーディングは、 C P = 10000 16 + ( H S G − D 800 16 ) × 400 16 + ( L S G − D C 00 16 ) {\displaystyle CP=10000_{16}+\left(HSG-{\rm {D800}}_{16}\right)\times 400_{16}+\left(LSG-{\rm {DC00}}_{16}\right)}
である。
コード変換例
「?
次の表は、この文字変換と他をまとめたものである。 色は、コードポイントからのビットがUTF-16バイトにどのように分配されるかを示した。 なお、UTF-16エンコーディングプロセスによって追加された追加ビットは黒で示されている。
文字 一つの面は6万5536個の符号位置がある。 面符号位置英語での名称略称日本語での名称収録されている主な文字 日本では2000年にJIS X 0208を拡張する目的でJIS X 0213(いわゆるJIS第3・第4水準)が制定されたが、この際、新たに採用された文字でUnicodeになかったものの一部は、BMPに収録できず、第2面への収録となった(Unicodeが最終的にJIS X 0213への対応を完了したのは2002年である)。このため、JIS X 0213収録文字をUnicodeで完全にサポートするには、追加漢字面をサポートしたOS、フォント、アプリケーションが必要となる。
(符号位置)符号位置(2進数)UTF-16
符号単位列(2進数)UTF-16
符号単位列UTF-16BE
符号化バイト列UTF-16LE
符号化バイト列
$U+00240000 0000 0010 01000000 0000 0010 0100002400 2424 00
?[注釈 5]U+20AC0010 0000 1010 11000010 0000 1010 110020AC20 ACAC 20
?[注釈 4]U+20BB70010 0000 1011 1011 01111101 1000 0100 0010 1101 1111 1011 0111D842 DFB7D8 42 DF B742 D8 B7 DF
最大値U+10FFFF1 0000 1111 1111 1111 11111101 1011 1111 1111 1101 1111 1111 1111DBFF DFFFDB FF DF FFFF DB FF DF
面
第0面U+0000 - U+FFFFBasic Multilingual PlaneBMP基本多言語面基本的な文字。
第1面U+10000 - U+1FFFFSupplementary Multilingual PlaneSMP追加多言語面古代文字や記号・絵文字類など。
第2面U+20000 - U+2FFFFSupplementary Ideographic PlaneSIP追加漢字面漢字専用領域。
第3面U+30000 - U+3FFFFTertiary Ideographic PlaneTIP第三漢字面追加漢字面に入りきらなかった漢字。また、将来的には古代漢字や甲骨文字などが収録される予定[注釈 6]。
第4面U+40000 - U+4FFFF未使用(将来どのような目的で使用するのかすら決まっていない)。
第5面U+50000 - U+5FFFF
第6面U+60000 - U+6FFFF
第7面U+70000 - U+7FFFF
第8面U+80000 - U+8FFFF
第9面U+90000 - U+9FFFF
第10面U+A0000 - U+AFFFF
第11面U+B0000 - U+BFFFF
第12面U+C0000 - U+CFFFF
第13面U+D0000 - U+DFFFF
第14面U+E0000 - U+EFFFFSupplementary Special-purpose PlaneSSP追加特殊用途面制御コード専用領域。
第15面U+F0000 - U+FFFFFPrivate Use PlanePUP私用面BMPの U+E000 - U+F8FF の領域の拡張。
第16面U+100000 - U+10FFFF