3.6.6 码点与代码单元

Java字符串由char值序列组成。char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。

length方法返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。例如:

String greeting = "Hello";

int n = greeting.length();

要想得到实际的长度,即码点数量,可以调用:

int cpCount = greeting.codePointCount(0, greeting.length());

调用s.charAt(n)将返回位置n的代码单元,n介于 0 ~ s.length() - 1之间。

要想得到第i个码点,应该使用下列语句

int index = greeting.offsetByCodePoints(0,i);

int cp = greeting.codePointAt(index);

原文地址:https://www.cnblogs.com/avention/p/10123690.html

时间: 2024-10-30 03:10:12

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

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

字符集与编码--代码点与代码单元

1. ASCII码 统一规定英语字符与二进制位之间的关系.ASCII码一共规定了128个字符的编码.例如,空格“SPACE”是32(二进制00100000),大写字母A是65(二进制01000001).这128个符号(包括32个不能打印出来的控制符号)只占用了一个字节的后面7位,最前面的1位统一规定为0. 2. Unicode 世界上存在多种编码方式,同一个二进制数字可以被解释成不同的符号.之所以电子邮件经常出现乱码,是因为发信人和收信人使用的编码方式不一样.作为所有符号的编码,Unicode纳

关于Java代码点和代码单元

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

storm源码之storm代码结构【译】【转】

[原]storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Stor

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

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

Dalvik指令分析(一) 字节码转换为smali代码

有过android应用反编译或者再打包的朋友都有使用过apktool的经验,apktool能将dex文件的 字节码转换为smali代码,这个工具是怎么做到对dex进行解析并生成smali代码的呢?这就需要对 dex文件的格式很熟悉.需要掌握dalvik指令的字节码格式,并能翻译成对应的smali代码. 我准备写一系列的文章来分析dex文件的格式.dalvik字节码的格式.以及dex to smali的方法, 基于此可以做很多的应用,比如安全扫描.应用加固等等! Dalvik指令介绍请参考官方文档

代码点,代码单元

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

个人博客作业2--代码规范和代码复审

代码规范: 代码规范作为coders所遵守的一个默认的准则,其存在的意义是十分重要的. 不以规矩,不能成方圆.如何正确.规范的工作,如何为我们的工作提供依据,并能够高效率的执行,这些都需要正确.行之有效的规范.而代码规范正是保证这一切的基础.它使得不同的人在相互合作的时候能够更加迅速.容易地理解彼此的工作进度与代码信息,为之后的协作提供一个良好的沟通环境.一个人的能力十分有限,所以与他人的沟通协作不可或缺,这更加彰显出代码规范的重要. 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们

Unicode中的代码点和代码单元

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