2

Java で Unicode コード ポイント (整数) を char 配列 (バイト) にエンコードする関数は、基本的に次のとおりです。

return new char[] { (char) codePoint };

これは、整数値から char への単なるキャストです。

このキャストが実際にどのように行われるか、整数値から UTF-16 でエンコードされた文字に変換するためのキャストの背後にあるコードを知りたいです。私はJavaソースコードでそれを探してみましたが、運がありませんでした.

4

5 に答える 5

9

どの機能について話しているのかわかりません。

UTF-16 がどのように定義されたかにより、有効なintコード ポイントのキャストは、基本的な多言語面のコード ポイントに対して機能します。charU+FFFF を超えるものを変換するには、Character.toChars(int)を使用して UTF-16 コード単位に変換する必要があります。アルゴリズムはRFC 2781で定義されています。

于 2011-05-03T20:33:42.453 に答える
0

コード ポイントは文字にマップされる単なる数値であり、実際の変換は行われません。Unicode コード ポイントは 16 進数で指定されるため、codePoint が 16 進数であっても、その文字 (またはグリフ) にマップされます。

于 2011-05-03T20:26:50.597 に答える
0

acharは Java で UTF-16 データを保持するように定義されているため、これですべてです。入力が の場合(つまり、U+10000 以上の Unicode コードポイントを表すことができる場合)のみ、何らかの計算が必要です。intすべてのchar値は既に UTF-16 です。

于 2011-05-03T20:28:11.163 に答える
0

Java のすべてcharの は、内部的に UTF-16 で表されます。これは、整数値をそれにマッピングしているだけですchar

于 2011-05-03T20:28:46.140 に答える
0

また、Java プラットフォームでは、char 配列はすでに UTF-16 です。

于 2011-05-03T20:29:05.850 に答える