Java中的字符编码的转换


  • Java语言使用UTF-16这种字符集编码。

  • Unicode编码字符集的代码点(code point)范围在U+0000 到 U+10FFFF间。总数是2^20(增补字符) + 2^16 (BMP)

代码点 名称
U+0000 - U+FFFF Basic Multilingual Plane (BMP) ,基本多语言平面
U+10000 - 10FFFF supplementary characters,增补字符
  • 在java(UTF-16)中,增补字符表示为一对char值,第一个值取自高代理项范围,即 (\uD800-\uDBFF),大小3FF,第二个值取自低代理项范围,即 (\uDC00-\uDFFF),大小3FF。增补字符数量为 210 * 210,即 220
  • 所以一个char值表示Basic Multilingual Plane (BMP) 代码点,其中还包括代理项代码点。恰好可以用两个字节表示。所以在java中char类型可以表示BMP字符集。
  • 所以int值表示所有 Unicode 码点,包括增补码点。int的 21 个低位(最低有效位)用于表示 Unicode 代码点,并且 11 个高位(最高有效位)必须为零。

你可能感兴趣的:(Java中的字符编码的转换)