すべての入力が Basic Multilingual Plane (U+0000 から U+FFFF) にあることがわかっている場合は、次を使用できます。
char character = 'x';
int codePoint = character;
JLS 5.1.2 で指定されているように、からchar
への暗黙的な変換を使用します。int
プリミティブ型に対する 19 の特定の変換は、拡張プリミティブ変換と呼ばれます。
- ...
char
、int
、long
、float
またはdouble
...
char から整数型 T への拡大変換は、char 値の表現をゼロ拡張して、より広い形式を埋めます。
ただし、 achar
は UTF-16 コード単位のみです。ポイントは、サロゲート ペア(2 つの UTF-16 コード単位が結合して 1 つの文字を構成するCharacter.codePointAt
) で構成される、BMP の外側のコード ポイントに対応することです。
JLS 3.1から:
Unicode 標準は、当初、固定幅の 16 ビット文字エンコーディングとして設計されました。その後、表現に 16 ビット以上を必要とする文字を許可するように変更されました。有効なコード ポイントの範囲は、16 進数の U+n 表記を使用して U+0000 から U+10FFFF になりました。コード ポイントが U+FFFF より大きい文字は補助文字と呼ばれます。16 ビット単位のみを使用して文字の全範囲を表すために、Unicode 標準では UTF-16 と呼ばれるエンコードを定義しています。このエンコーディングでは、補助文字は 16 ビットのコード単位のペアとして表されます。最初は高サロゲート範囲 (U+D800 から U+DBFF) から、2 番目は低サロゲート範囲 (U+DC00 から U) からです。 +DFFF)。U+0000 から U+FFFF の範囲の文字の場合、コード ポイントの値と UTF-16 コード単位は同じです。
より複雑な状況に対処できるようにする必要がある場合は、より複雑なコードが必要になります。