Java字符

2016-11-21  本文已影响37人  zhizhuwang

char

表示Java语言中的字符,是一个char是一个16位(2个字节)的无符号正整数。
由于2个字节的char最大只能表示65535个字符,对于编码超过65535的字符,只能用两个char表示。

char本质上是一个16位的无符号正整数,对应着Unicode的编号,表示这个编号所所对应的字符,

Unicode

char 不等于Unicode字符。
Unicode给世界上每个字符分配了一个编号,编号范围从0x000000到0x10FFFF。编号范围在0x0000到0xFFFF之间的字符,为常用字符集,称BMP(Basic Multilingual Plane)字符。编号范围在0x10000到0x10FFFF之间的字符叫做增补字符(supplementary character)。

Unicode主要规定了编号,但没有规定如果把编号映射为二进制,UTF-16是一种编码方式,或者叫映射方式,它将编号映射为两个或四个字节,对BMP字符,它直接用两个字节表示,对于增补字符,使用四个字节,前两个字节叫高代理项(high surrogate),范围从0xD800到0xDBFF,后两个字节叫低代理项(low surrogate),范围从0xDC00到0xDFFF,UTF-16定义了一个公式,可以将编号与四字节表示进行相互转换。

Java内部采用UTF-16编码,char表示一个字符,但只能表示BMP中的字符,对于增补字符,需要使用两个char表示,一个表示高代理项,一个表示低代理项。

使用int可以表示任意一个Unicode字符,低21位表示Unicode编号,高11位设为0。整数编号在Unicode中一般称为代码点(Code Point),表示一个Unicode字符,与之相对,还有一个词代码单元(Code Unit)表示一个char。

Character

对原子类型char的包装。封装了Unicode级别的各种静态方法。

String

character的序列

getBytes(charset) 对字符串按照指定的字符集进行编码

String ch = "中";
byte[] b = ch.getBytes("UTF-8");

输出[-28,-72,-83],输出汉字的对应UTF-8编码的字节数组。

String(byte bytes[], String charsetName)
按照指定的字符集进行解码

String ch = "中";
byte[] b = ch.getBytes("UTF-8");
String s = new String(b, "UTF-8");

字符编码的问题

http://www.cnblogs.com/yezhenhan/archive/2011/01/14/1935376.html

UTF-8和iso-8859-1

http://sunwcn.blog.163.com/blog/static/287910802008364178344/

Spring MVC 参数映射

http://www.cnblogs.com/rhythmK/p/3971191.html

上一篇下一篇

猜你喜欢

热点阅读