Unicode で有効な最大コード ポイントは U+10FFFF であり、21 ビット コード セットになります (ただし、すべての 21 ビット整数が有効な Unicode コード ポイントであるとは限りません。具体的には、0x110000 から 0x1FFFFF までの値は有効な Unicode コード ポイントではありません)。
これが、数値 1,114,112 の由来です: U+0000 .. U+10FFFF は 1,114,112 の値です。
ただし、UTF-16 の代理である一連のコード ポイントもあります。これらは U+D800 .. U+DFFF の範囲にあります。これは、UTF-16 用に予約されている 2048 コード ポイントです。
1,114,112 - 2,048 = 1,112,064
66 の非文字もあります。これらは正誤表 #9で部分的に定義されています: U+nFFFE および U+nFFFF の形式の 34 個の値 ( nは値 0x00000、0x10000、… 0xF0000、0x100000)、および 32 個の値 U+FDD0 - U+FDEF。これらも差し引くと、割り当て可能な文字数は 1,111,998 になります。「私的使用」のために予約された 3 つの範囲があります: U+E000 .. U+F8FF、U+F0000 .. U+FFFFD、および U+100000 .. U+10FFFD。実際に割り当てられる値の数は、表示している Unicode のバージョンによって異なります。最新バージョンに関する情報は、Unicode Consortiumで見つけることができます。とりわけ、そこの序文には次のように書かれています。
Unicode 標準、バージョン 7.0 には、112,956 文字が含まれています
したがって、使用可能なコード ポイントの約 10% しか割り当てられていません。
コード ポイントの数として 1,112,114 を見つけた理由を説明できません。
ちなみに、上限 U+10FFFF が選択されているのは、Unicode のすべての値を UTF-16 の 1 つまたは 2 つの 2 バイト コーディング単位で表現できるようにするためです。1 つの上位サロゲートと 1 つの下位サロゲートを使用して、BMP または Basic 以外の値を表します。 U+0000 .. U+FFFF の範囲の多言語面。