unicode

unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。计算机采用八比特一个字节,一个字节最大整数是255,还要表示中文一个字也是不够的,至少需要两个字节,为了统一所有的文字编码,unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,通常用两个字节表示一个字符,所以unicode每个平面可以组合出65535种不同的字符,一共17个平面。

由于英文符号只需要用到低8位,所以其高8位永远是0,因此保存英文文本时会多浪费一倍的空间。

比如汉子“汉”的unicode,在java中输出

System.out.println("\u5B57");

UTF-8

unicode在计算机中如何存储呢,就是用unicode字符集转换格式,即我们常见的UTF-8、UTF-16等。

UTF-8就是以字节为单位对unicode进行编码,对不同范围的字符使用不同长度的编码。

Unicode Utf-8

000000-00007F 0xxxxxxx
000080-0007FF 110xxxxx 10xxxxxx
000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx
010000-10FFFF 11110xxx10xxxxxx10xxxxxx10xxxxxx
Java中的String对象就是一个unicode编码的字符串。

java中想知道一个字符的unicode编码我们可以通过Integer.toHexString()方法

    String str = "编";StringBuffer sb = new StringBuffer();char [] source_char = str.toCharArray();String unicode = null;for (int i=0;i<source_char.length;i++) {unicode = Integer.toHexString(source_char[i]);if (unicode.length() <= 2) {unicode = "00" + unicode;}sb.append("\\u" + unicode);}System.out.println(sb);输出\u7f16

对应的utf-8编码是什么呢?

7f16在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。
7f16写成二进制是:0111 1111 0001 0110
按三字节模板分段方法分为0111 111100 010110,代替模板中的x,得到11100111 10111100 10010110,即“编”对应的utf-8的编码是e7 bc 96,占3个字节

codepoint

unicode的范围从000000 - 10FFFF,char的范围只能是在\u0000到\uffff,也就是标准的 2 字节形式通常称作 UCS-2,在Java中,char类型用UTF-16编码描述一个代码单元,但unicode大于0x10000的部分如何用char表示呢,比如一些emoji:

Java的String类中提到的代码点,代码单元到底是什么?相关推荐

  1. 阿里最新面试必备项之Java的String类,持续更新中!

    最新腾讯面试必备项之Java的String类,持续更新中! 1.1 String的特性 String类:代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例 ...

  2. Java 11:String类中的新方法

    Java 11:String类中的新方法 Java 11没有很多特定于语言的功能.因此,令人惊讶的是,在Java String Class中引入了6种新方法. Java 11 String类新方法 让 ...

  3. java 实现 string类_java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  4. 17.Java常用实用类之String类中常用的方法以及一般应用场景,final关键字

    文章目录 1.String类学习 1.1.什么是String类 1.2.String类中常用的方法 1.2.1. 构造方法 1.2.2.public int length() 1.2.3.public ...

  5. Java——String类中的compareTo方法总结

    String类的定义:    java.lang  类 String   java.lang.Object       java.lang.String 所有已实现的接口: Serializable, ...

  6. java string.substring 参数,Java,String类中的subString()方法,stringsubstring

    Java,String类中的subString()方法,stringsubstring public class TestStringSubString { // main函数 public stat ...

  7. java面向对象使用字符串_java面向对象中的String类中12种常用的方法

    1.字符串与字符数组的转换 字符串可以使用toCharArray()方法变成一个字符数组,也可以使用String类的构造方法把一个字符数组变成一个字符串. public class StringAPI ...

  8. java string改变的影响_为什么Java的string类要设成immutable(不可变的)

    最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类 ...

  9. JDK1.8源码(三)——java.lang.String 类

    String 类也是java.lang 包下的一个类,算是日常编码中最常用的一个类了,那么本篇博客就来详细的介绍 String 类. 1.String 类的定义 public final class ...

最新文章

  1. 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute
  2. IIS7.5 错误代码0x8007007e HTTP 错误 500.19
  3. vba 中sql like用法
  4. 使用模态窗口编辑数据
  5. mybatis-plus删除操作(逻辑与物理删除)
  6. oncreate 测量尺寸
  7. 无线网络技术学习总结
  8. 解决Kaggle新用户注册无法弹出验证提示的问题
  9. 手机屏幕怎么计算机,怎么将手机屏幕投屏到电脑上
  10. 外包商爱图腾求变推自主APP:91助手阻碍发展
  11. android学习---开发Google地图应用程序
  12. fluentd收集K8S日志并以K8S的container_name作为索引名存入Elasticsearch中
  13. ApplicatioinRunner vs CommandLineRunner
  14. 基于Python猫眼票房TOP100电影数据抓取
  15. SOCKS代理的定义
  16. 潜入维基解密机房 更新中文视频+高清图
  17. 安信可A7模块 GPRS/GPS使用教程
  18. 【前端系列教程之JavaScript】01_JavaScript概述和引入方式
  19. 32位计算机分配的最大内存大小,win732位内存支持多大内存 win732位内存最大支持大小【图文】...
  20. 在matlab中怎么录制音频_68岁洪金宝参加某节目录制,他在节目中的表现怎么样?...

热门文章

  1. 二手车零售DTC黑马Carvana的全渠道策略
  2. Eureka的UNKNOWN
  3. 写一个freeRTOS
  4. linux 指定网卡 ping
  5. 刘慈欣回应《流浪地球》热点问题:承认有些设定有bug
  6. 微信分享第三方连接(H5页面)自定义缩略图、标题、描述(显示分享框,而不是链接)(微信JS-SDK)
  7. 串口通信,IIC通信,SPI通信的简单区别
  8. 西雅图华人码农生存实录
  9. 消息中间件架构面面观
  10. 上海航芯| BMS专题之BMS基础功能模块概述分享