woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

深入理解 Java 的 char

char Java 的八大基本数据类型之一,字长 16 bit

Java 的字符编码标准是 Unicode。如今 Unicode 的字符数已经超过了21665536),一个 char 类型不能直接表示所有的字符。为了解决这个问题,Java 采用了如下的机制。

1.   定义了代码点(code point。这实际上就是编码表中的码值。用U+XXXX的方式表示。

2.   定义了代码单元(code unit。每 16 bit 就是一个代码单元(一个 char 变量就可以装下了)。

3.   通过一个算法,将代码单元映射到代码点。由于有些字符的编码范围大于65536,因此,会使用两个代码单元来表示一个代码点。

具体是这样的:

Unicode 的代码点被分为 17 个代码级别:

1.   基本的多语言级别(basic multilingual plane,共 1 个级别)。范围是 U+0000 ~ U+FFFF。位于基本多语言级别中的字符被称为基本字符。在 Java 中,基本字符采用一个代码单元进行编码。

2.   附加级别(supplymental plane,共 16 个级别)。范围是 U+10000 ~ U+10FFFF。位于附加级别中的字符被称为辅助字符。在 Java 中,它采用一对连续的代码单元进行编码。

3.   在基本的多语言级别中,有2048个特殊的编码(也占用一个代码单元)。它们不表示任何字符,而是用于两两组,以产生附加级别的代码点。也就是2种用到的代码单元编码。(如果不单独使用特殊编码,程序又如何能够区分何时使用基本字符,何时使用附加字符?)

4.   U+D800 ~ U+DBFF用于第一个代码单元,U+DC00 ~ U+DFFF用于第二个代码单元。

例:U+D835U+DD6B表示U+1D56B

 

posted on 2009-08-10 11:25 肥仔 阅读(138) 评论(0)  编辑 收藏 引用 所属分类: Web-后台


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理