Java語(yǔ)言使用UTF-16這種字符集編碼。
Unicode編碼字符集的代碼點(diǎn)(code point)范圍在U+0000 到 U+10FFFF間。總數(shù)是2^20(增補(bǔ)字符) + 2^16 (BMP)
代碼點(diǎn) | 名稱 |
---|---|
U+0000 - U+FFFF | Basic Multilingual Plane (BMP) 再菊,基本多語(yǔ)言平面 |
U+10000 - 10FFFF | supplementary characters,增補(bǔ)字符 |
- 在java(UTF-16)中宏邮,增補(bǔ)字符表示為一對(duì)char值泽示,第一個(gè)值取自高代理項(xiàng)范圍,即 (\uD800-\uDBFF)蜜氨,大小3FF械筛,第二個(gè)值取自低代理項(xiàng)范圍,即 (\uDC00-\uDFFF)飒炎,大小3FF埋哟。增補(bǔ)字符數(shù)量為 210 * 210,即 220郎汪。
- 所以一個(gè)char值表示Basic Multilingual Plane (BMP) 代碼點(diǎn)赤赊,其中還包括代理項(xiàng)代碼點(diǎn)。恰好可以用兩個(gè)字節(jié)表示煞赢。所以在java中char類型可以表示BMP字符集抛计。
- 所以int值表示所有 Unicode 碼點(diǎn),包括增補(bǔ)碼點(diǎn)照筑。int的 21 個(gè)低位(最低有效位)用于表示 Unicode 代碼點(diǎn)吹截,并且 11 個(gè)高位(最高有效位)必須為零。