通用字符集(UCS)


UCS是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所制定的标准字符集。

UCS包括了其他所有的字符集(包含了已知语言的所以字符)。

ISO/IEC 10646定义了一个31位的字符集(首位恒定为0,占用4字节)。

Unicode(万国码、国际码、统一码、单一码)


编码方式:

Unicode编码空间从“U+0000”到“U+10FFFF”(共1112064个码位),Unicode的编码空间划为17个平面,每个平面包含216(65536)个码位。17个平面码位可表示为“U+xx0000”到“U+xxFFFF”(xx表示十六进制从    0016到1016,共计17个平面)。第一个平面称为基本多文种平面,其他平面为辅助平面。

Unicode目前实际应用的版本对应于UCS-2,使用16位的编码空间(占用2字节,最多可表示216=65536个字符),但当前版本并未完全使用这16位编码,仍保留了大量空间以作为特殊使用或将来扩展。

上述16位Unicode字符构成了基本多文种平面(属于UCS级别3,简称BMP,又称“零号平面”)。最新(未实际广泛使用)的Unicode版本又定义了16个辅助平面,共占用4字节编码空间,与UCS-4(未来版本将会达到,UCS-4为31位字符集,加上首位恒为0,共占32位,4字节,最多可表示231个字符)一致。

基本多文种平面的字符的编码为“U+hhhh”(h为一个十六进制数字),与UCS-2编码完全相同。同一字符UCS-2对应的UCS-4编码后两字节相同,前两字节均为0。

实现方式(UTF):

在不同平台上,为了节省空间,Unicode编码的实现方式不同。

例如,对一个仅含基本7位ASCⅡ字符的Unicode文件,如果每个字符以2字节的原Unicode编码方式传输将浪费巨大空间。对于这种情况,可以采用UTF-8编码(占用一个字节,后7位为原ASCⅡ编码,首位补0)。对于ASCⅡ与其他Unicode字符混混的情况,将通过算法转换,每个字符使用1-4个字节编码。

代码点/代码单元(JDK 5.0)


代码点(code point)是指与一个编码表中的某个字符对应的代码值(Unicode编码方式)。

Java中,char类型用UTF-16编码描述一个代码单元(code unit)。

UTF-16采用不同长度的编码表示所有的Unicode代码点。在基本多文种平面,每个字符用16位表示(通常称为一个代码单元);辅助字符采用一对连续的代码单元(32位)表示。

参考链接


写在最后


这次的排版借鉴了维基百科的排版方式,前三次的笔记,每次排版都不太一样 XD

UCS、Unicode、UTF,越看越晕,越写越不知道在写什么。怎么写的和Java一点关系都没有啊!

发现好像可以用一句话直接总结:Java里的字符串就是由char类型序列,一个个的代码点表示的,大部分常用字符(基本多文种平面)的代码点使用一个代码单元(2字节),辅助字符则为一对代码单元(4字节)。

Java Core 学习笔记——3.char/Unicode/代码点/代码单元的更多相关文章

  1. java jvm学习笔记七(jar包的代码认证和签名)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 前言: 如果你循序渐进的看到这里,那么说明你的毅力提高了,jvm的很多东西都是比较抽像的,如果不找相对应的代码来辅助理解 ...

  2. Android(java)学习笔记128:使用proguard混淆android代码

    1.当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,an ...

  3. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. java多线程学习笔记——详细

    一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

  5. Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  6. Java NIO学习笔记

    Java NIO学习笔记 一 基本概念 IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. 所有语言运行时系统提供执 ...

  7. Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  8. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  9. Android(java)学习笔记160:Framework运行环境之 Android进程产生过程

    1.前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序 ...

随机推荐

  1. rc.local自启动学习(转)

    linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘. 本文中假设inittab中设置的init tree为: /etc/rc.d/rc0.d/etc/rc. ...

  2. Activity Recognition行为识别

    暑假听了computer vision的一个Summer School,里面Jason J. Corso讲了他们运用Low-Mid-High层次结构进行Video Understanding 和 Ac ...

  3. jQuery练习二球队移动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. rqnoj-106-最大加权矩形-dp

    和我之前做的那个切西瓜的题目相比就是小巫见大巫了.. 运用最长字段和的原理把O(n^4)转化成O(n^3) #include<stdio.h> #include<string.h&g ...

  5. powerdesigner 15 如何导出sql schema

    PowerDesigner导出所有SQL脚本 操作:Database=>Generate Database PowerDesigner怎么导出建表sql脚本 1 按照数据库类型,切换数据库. D ...

  6. visual studio 中删除多余的空白行

    替换  Ctrl+H  正则  勾选  替换 ^\s*\n 为空

  7. AutoCompleteTextView与TextWatcher的结合

      /******************************************************************************************** * au ...

  8. 《自己动手写操作系统》pmtest2笔记

    ;DispReturn模拟一个回车的显示,(让下一个要显示的字符在下一行的开头处显示),其中edi始终指向要显示的下一个字符的位置.;   ------------------------------ ...

  9. Qt之QHeaderView自定义排序(QSortFilterProxyModel)

    简述 对以上节的排序,我们衍伸了两点: 把一个字符串前面的数据按照字符串比较,而后面的数据按照整形比较. 将整形显示为字符串,而排序依然正常呢. 为了分别描述,这里我们先解决问题1. 简述 效果 处理 ...

  10. Spring Transaction属性之Propagation

    spring Transaction中有一个很重要的属性:Propagation.主要用来配置当前需要执行的方法,与当前是否有transaction之间的关系. 我晓得有点儿抽象,这也是为什么我想要写 ...