Java Core 学习笔记——3.char/Unicode/代码点/代码单元
通用字符集(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位)表示。
参考链接
- Unicode:http://zh.wikipedia.org/wiki/Unicode
- UCS:http://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E5%AD%97%E7%AC%A6%E9%9B%86
- UTF-16:http://zh.wikipedia.org/wiki/UTF-16
写在最后
这次的排版借鉴了维基百科的排版方式,前三次的笔记,每次排版都不太一样 XD
UCS、Unicode、UTF,越看越晕,越写越不知道在写什么。怎么写的和Java一点关系都没有啊!
发现好像可以用一句话直接总结:Java里的字符串就是由char类型序列,一个个的代码点表示的,大部分常用字符(基本多文种平面)的代码点使用一个代码单元(2字节),辅助字符则为一对代码单元(4字节)。
Java Core 学习笔记——3.char/Unicode/代码点/代码单元的更多相关文章
- java jvm学习笔记七(jar包的代码认证和签名)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 前言: 如果你循序渐进的看到这里,那么说明你的毅力提高了,jvm的很多东西都是比较抽像的,如果不找相对应的代码来辅助理解 ...
- Android(java)学习笔记128:使用proguard混淆android代码
1.当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,an ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- java多线程学习笔记——详细
一.线程类 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Java NIO学习笔记
Java NIO学习笔记 一 基本概念 IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. 所有语言运行时系统提供执 ...
- Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Android(java)学习笔记160:Framework运行环境之 Android进程产生过程
1.前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序 ...
随机推荐
- Eclipse —— 如何修改文件的默认编辑器
Eclipse下的各类文件各自都有默认的编辑器,但不一定好用.如何指定各种文件的默认编辑器呢? 假如,Properties文件,我不想用Eclipse自带的编辑器,而是使用 Properties Ed ...
- allegro下快捷键设置[转贴]
zz : http://yuandi6.blog.163.com/blog/static/207265185201210245435397/ 修改变量文件,设置自定义快捷键. Allegro可以通过修 ...
- 选择——ERP信息系统选型
做一次选择并不难,难的是做一次坚定而正确的选择.TCL电脑公司的ERP软件选型就是一次正确而艰难的选择过程.让我们从头说起吧! 业界都知道TCL电脑是IT行业的新入行者,更知道TCL的另一个诠释:& ...
- python中的 @ 修饰符
今天学习廖老师的python教程,碰到了修饰符'@',不太了解,查看了下官方文档. 简单的整理下: @dec2 @dec1 def func(arg1, arg2, ...): pass 等价于 de ...
- CVS数据的导入和导出
2.CSV导入/导出测试 package junit.test; import java.io.File; import java.util.ArrayList; import java.util.L ...
- JAVA反射技术的使用
前言 在开发html使用jquery提交post的时候,可以使用jquery遍历from元素里面的input元素实现参数组合,这样就不用手动打参数了,特别是在参数很多的时候,费神费时. 我开发Andr ...
- PHPStorm/webstorm tips
phpstorm对于使用PHP开发web的人员来说,是一个非常不错的编辑开发IDE,以前用过sublime,但是相比于storm,sublime在浏览legacy代码,类代码编辑方面明显要逊色不少.同 ...
- github概念和实战
fork: 通过fork操作,你将拥有了别人创建的repo的ownership,但是url却变成了/youraccount/repo,这时你将可以做git push操作 clone: 该命令是直接将r ...
- HDU 1513 Palindrome
题目就是给一个字符串问最少插入多少个字符能让原字符串变为回文字符串. 算法: 用原串的长度减去原串与翻转后的串的最大公共字串的长度,就是所求答案. //#define LOCAL #include & ...
- python练习程序(c100经典例19)
题目: 一个数如果恰好等于它的因子之和,这个数就称为“完数”.例如6=1+2+3.编程找出1000以内的所有完数. def foo(a): sra=a; lis=[1]; while 1: for i ...