Java中的代码点和代码单元
2015-06-24 14:24
537 查看
转自 http://www.cnblogs.com/ayanamistltz/archive/2012/11/28/2793358.html
char:java中,char类型为16位,原本用于表示一个字符。但是后来发现,16位已经不够表示所有的字符,所以后来发展出了用代码点表示字符的方法。
代码点:是指编码字符集中,字符所对应的数字。有效范围从U+0000到U+10FFFF。其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。
代码单元:对代码点进行编码得到的1或2个16位序列(UTF-16)。其中基本字符的代码点直接用一个相同值的代码单元表示,增补字符的代码点用两个代码单元进行编码,编码值来自U+D800到U+DFFF,这个范围内没有数字用于表示字符,因此程序可以识别出当前字符是单单元的基本字符,还是双单元的增补字符。
char:java中,char类型为16位,原本用于表示一个字符。但是后来发现,16位已经不够表示所有的字符,所以后来发展出了用代码点表示字符的方法。
代码点:是指编码字符集中,字符所对应的数字。有效范围从U+0000到U+10FFFF。其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。
代码单元:对代码点进行编码得到的1或2个16位序列(UTF-16)。其中基本字符的代码点直接用一个相同值的代码单元表示,增补字符的代码点用两个代码单元进行编码,编码值来自U+D800到U+DFFF,这个范围内没有数字用于表示字符,因此程序可以识别出当前字符是单单元的基本字符,还是双单元的增补字符。
1 public class HelloBunny 2 { 3 public static void main(String[] args) 4 { 5 String sentence = "\u03C0 \uD835\uDD6B"; 6 int lengthU = sentence.length(); 7 int lengthP = sentence.codePointCount(0, lengthU); 8 System.out.println(lengthU); // 4个code units 9 System.out.println(lengthP); // 3个code points 10 11 int i = sentence.codePointAt(2); // i=2 true i=0,1,3 false i=4 out of bound 12 boolean b = Character.isSupplementaryCodePoint(i); 13 System.out.println(b); 14 } 15 }
相关文章推荐
- 【Java编程思想】(5)接口
- Core Java 学习(三) - 继承设计技巧
- Spring注解@Component、@Repository、@Service、@Controller区别
- LeetCode_47---Permutations II
- java基础—线程间的通讯 生产者与消费者
- javaWeb系列之十六(过滤器)
- javaWeb系列之十七(上传下载)
- java写文件
- JavaWeb系列之十五(监听器)
- JavaWeb系列之十四(DBUtil)
- java 保存数据到mysql出现???
- Spring整合Quartz
- GFX游戏引擎衔接文件简述(二)Java代码部分
- 如何将android studio项目转换成eclipse
- spring bean作用域
- 关于java多线程和juc的详细介绍 收藏
- java 枚举类型
- 我要阻止做java开发的男朋友去创业型公司工作吗?
- Eclipse SVN插件安装
- java压缩算法