美文网首页JAVA技术混杂
java中代码点与代码单元的区别

java中代码点与代码单元的区别

作者: Kinsanity | 来源:发表于2018-10-16 17:27 被阅读22次

    在java中一个char类型为16个二进制位,原本用于表示一个字符。但后来发现,16位已经不够表示所有的字符,所以后来发展出了代码点表示字符的方法。

    代码点:

    代码点(code point)是指编码字符集中,字符所对应的数字。有效范围从U+0000到U+10FFFF。其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。

    代码单元:

    代码单元(code unit):对代码点进行编码得到的1或2个16位序列。其中基本字符的代码点直接用一个相同值的代码单元表示,增补字符的代码点用两个代码单元的进行编码,这个范围内没有数字用于表示字符,因此程序可以识别出当前字符是单单元的基本字符,还是双单元的增补字符。

    代码点与代码单元:

    一个代码单元为16位二进制,一个代码点为一个或两个16位二进制。即一个代码点可表示为一个代码单元或两个代码单元。

    代码体现:

    String类中length方法返回的是代码单元的个数,codePointCount返回的是代码点的个数。
    offsetByCodePoints方法返回的是从给定的index处偏移codePointOffset个代码点的索引。

    String str = "\u03C0\uD835\uDD6B"; //\uD835\uDD6B 代表两个代码单元代,一个代码点
    System.out.println(str.length());//输出3
    System.out.println(str.codePointCount(0,str.length()));;//输出2
    

    相关文章

      网友评论

        本文标题:java中代码点与代码单元的区别

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