美文网首页
Java字符

Java字符

作者: zhizhuwang | 来源:发表于2016-11-21 15:51 被阅读37次

    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

    相关文章

      网友评论

          本文标题:Java字符

          本文链接:https://www.haomeiwen.com/subject/sajkyttx.html