代码单元与代码点

代码点指编码表(比如Unicode)中某个字符的代码值(数字),书写时前面加U+,比如U+0041是字母A的代码点

java中的代码单元指表示编码表字符的最小存储单元,用16位表示

Unicode 代码点 U+0041 U+00DF U+6771 U+10400
表示字形
UTF-32 代码单元
00000041
000000DF
00006771
00010400
UTF-16 代码单元
0041
00DF
6771
D801 DC00
UTF-8 代码单元
41
C3 9F
E6 9D B1
F0 90 90 80

增补字符,用两个代码单元表示的字符

网摘:

"代码点(Code Point)就是指Unicode中为字符分配的编号,一个字符只占一个代码点,例如我们说到字符“汉”,它的代码点是U+6C49.代码单元(Code Unit)则是针对编码方法而言,它指的是编码方法中对一个字符编码以后所占的最小存储单元。例如UTF-8中,代码单元是一个字节,因为一个字符可以被编码为1个,2个或者3个4个字节;在UTF-16中,代码单元变成了两个字节(就是一个char),因为一个字符可以被编码为1个或2个char(你找不到比一个char还小的UTF-16编码的字符,嘿嘿)。说得再罗嗦一点,一个字符,仅仅对应一个代码点,但却可能有多个代码单元(即可能被编码为2个char)。

以上概念绝非学术化的绕口令,这意味着当你想以一种统一的方式指定自己使用什么字符的时候,使用代码点(即你告诉你的程序,你要用Unicode中的第几个字符)总是比使用代码单元更好(因为这样做的话你还得区分情况,有时候提供一个16进制数字,有时候要提供两个)。"

想找到第i个代码点,使用下列语句

int index = greeting.offsetByCodePoints(0,i);  //得到0开始便宜i个代码点的索引值(数字)

int cp = greeting.codePointAt(index);  // 返回char值(unicode对应数字)

时间: 2024-10-28 11:53:21

代码单元与代码点的相关文章

Python:代码单元、代码点介绍

转于:https://www.cnblogs.com/runwulingsheng/p/5106078.html 博主:你是那天边突然划过的一道闪电 代码点:指编码表(比如Unicode)中某个字符的代码值(数字),书写时前面加U+,比如U+0041是字母A的代码点 代码单元:指表示编码表字符的最小存储单元,用16位表示 Unicode 代码点 U+0041 U+00DF U+6771 U+10400 表示字形 UTF-32 代码单元 00000041 000000DF 00006771 000

Java中代码点与代码单元(转)

摘要 本文介绍 Java 平台支持增补字符的方式.增补字符是 Unicode 标准中代码点超出 U+FFFF 的字符,因此它们无法在 Java 编程语言中描述为单个的 16 位实体(例如char数据类型).这些字符一般极少用,但是,有些会在诸如中文或日文人名中用到,因此,在东亚国家,政府应用程序通常会要求支持这些字符. Java 平台目前正在改进,以便支持对增补字符的处理,这种改进对现有的应用程序影响微乎其微.新的低层 API 在需要时能够使用单个的字符运行.不过,大多数文本处理 API 均使用

代码点,代码单元

引自:http://blog.csdn.net/weizhaozhe/article/details/3909079 摘要 本文介绍 Java 平台支持增补字符的方式.增补字符是 Unicode 标准中代码点超出 U+FFFF 的字符,因此它们无法在 Java 编程语言中描述为单个的 16 位实体(例如char数据类型).这些字符一般极少用,但是,有些会在诸如中文或日文人名中用到,因此,在东亚国家,政府应用程序通常会要求支持这些字符. Java 平台目前正在改进,以便支持对增补字符的处理,这种改

[Effective JavaScript 笔记] 第7条:视字符串为16位的代码单元序列

Unicode编码,基础:它为世界上所有的文字系统的每个字符单位分配一个唯一的整数,该整数介于0~1114111之间,在Unicode术语中称为代码点(code point). 和其它字符编码几乎没有任何不同(例如ASCII). 不同在于ASCII将每个索引映射为唯一的二进制表示,但Unicode允许多个不同二进制编码的代码点. 不同的编码在要求存储的字符串数量和操作速度之间进行权衡. 目前最流行的Unicode编码方式有:UTF-8,UTF-16,UTF-32. Unicode根据历史的数据,

关于Java代码点和代码单元

java char类型是16位的(UTF-16编码),它不能满足所有unicode字符的编码,java代码点是指某个字符对应的unicode编码值,如A字符的unicode代码点就为u+0041.代码点的数量其实也就是unicode字符的数量. 每个char变量其实就是一个代码单元,一个字符一般对应一个代码单元或者多个代码单元. 字符串的length方法返回的是代码单元的数量(注意,不是字符数量),而codePointCount方法返回则是代码点的数量,也就是unicode字符数量. 在编译ja

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

Unicode中的代码点和代码单元

Unicode标准的核心是一个编码字符集,它为每一个字符分配一个唯一数字.Unicode标准始终使用16进制数字,并且在书写时在前面加上U+,如字符“A”的编码为“U+0041”. 有个小技巧就是,在word中输入一个字符,然后按住alt+x就可以将该字符转为unicode显示. 代码点是指可用于编码字符集的数字.编码字符集定义一个有效的代码点范围,但是并不一定将字符分配给所有这些代码点.有效的Unicode代码点范围是U+0000至U+10FFFF.Unicode4.0将字符分配给一百多万个代

java代码点 代码单元

代码点:是指可用于编码字符集的数字. 从Unicode标准而来的术语,Unicode标准的核心是一个编码字符集,它为每一个字符分配一个唯一数字.Unicode标准始终使用16进制数字,并且在书写时在前面加上U+,如字符"A"的编码为"U+0041". 编码字符集定义一个有效的代码点范围,但是并不一定将字符分配给所有这些代码点.有效的Unicode代码点范围是U+0000至U+10FFFF.Unicode4.0将字符分配给一百多万个代码点中的96382个代码点. 2

3.6.6 码点与代码单元

Java字符串由char值序列组成.char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length方法返回采用UTF-16编码表示的给定字符串所需要的代码单元数量.例如: String greeting = "Hello"; int n = greeting.length(); 要想得到实际的长度,即码点数量,可以调用: int cpCount = greeting.c