精华内容
下载资源
问答
  • 代码点和代码单元

    2018-09-20 10:55:23
    代码单元:指一个已编码文本中具有最短比特组合的单元。使用UTF-8,代码单元为8比特;使用UTF-16,代码单元为16比特。 Unicode编码字符集有65536个字符,将这些字符表示成统一长度每个字符需要2个字节,即16比特,...

    代码点:计算机处理字符时要将字符数字化,所以需要对字符进行编码。编码字符集中每个字符都与一个编号对应,我们将这个编号称为代码点。

    代码单元:指一个已编码文本中具有最短比特组合的单元。使用UTF-8,代码单元为8比特;使用UTF-16,代码单元为16比特。
    Unicode编码字符集有65536个字符,将这些字符表示成统一长度每个字符需要2个字节,即16比特,所以若使用UTF-8编码,每个字符需要2个代码单元;使用UTF-16编码,需要1个代码单元。

    因此一串字符串代码点和代码单元数量可能不等。

    String s = "Hello";
    
    int n = s.length();  //得到的长度为代码单元数量
    int cpCount = s.codePointCount(0, s.length()); //得到代码点数量,即实际长度
    
    char a = s.charAt(n); //返回位置为n的代码单元
    int index = s.offsetByCodePoins(0, n);
    char cp = (char) s.codePointAt(index); //返回第n个代码点对应的字符
    
    展开全文
  • 代码单元与代码点

    2017-03-17 14:34:19
    代码单元(Code Unit)则是针对编码方法而言,它指的是编码方法中对一个字符编码以后所占的最小存储单元 如UTF-8中,代码单元是一个字节,因为一个字符可以被编码为1个,2个或者3个4个字节 区别在于一个字符,仅仅...

    代码点(Code Point)就是指Unicode中为字符分配的编号,一个字符只占一个代码点
    如字符A的代码点为U+0041
    代码单元(Code Unit)则是针对编码方法而言,它指的是编码方法中对一个字符编码以后所占的最小存储单元
    如UTF-8中,代码单元是一个字节,因为一个字符可以被编码为1个,2个或者3个4个字节
    区别在于一个字符,仅仅对应一个代码点,但却可能有多个代码单元
    应用
    当你想以一种统一的方式指定自己使用什么字符的时候,使用代码点总是比使用代码单元更好
    在Java中,字符串不是Unicode字符或者代码点的序列,而是代码单元。
    Java中的代码单元指表示编码表字符的最小存储单元,用16位表示
    这里写图片描述
    附录
    Unicode的标准是用来解决字符编码问题,在Unicode之前有很多不兼容的字符编码方式,如英语中7比特ASCII标准,用代表所有的英文字符,小数和符号,在西欧ASCII被拓展成8比特。于是Unicode设计唯一的16比特值,但是遇到中文还是不够用,现在Unicode需要21比特。还有变长的向后兼容的UTF-16.
    UTF-8是一种针对Unicode的可变长度字符编码.

    展开全文
  • java字符串由char值序列组成,char的数据类型是一个采用Unicode码点的代码单元。 即:char数据类型是一个代码单元 任意Unicode字符都是一个码点,大多数常用的Unicode码点由一个char代码单元组成,辅助字符码点由...

    java字符串由char值序列组成,char的数据类型是一个采用Unicode码点的代码单元。
    即:char数据类型是一个代码单元
    任意Unicode字符都是一个码点,大多数常用的Unicode码点由一个char代码单元组成,辅助字符码点由两个char代码单元组成。
    代码单元的数量和码点的数量
    1、代码单元数量(str.length()不是实际的字符串长度:辅助字符算两个):

    String str="hello";
            int n=str.length();
            System.out.println(n);

    2、码点数量(实际的字符的个数,辅助字符算一个):

           int m=str.codePointCount(0,str.length());
            System.out.println(m);

    codePointCount的用法:
    codePointCount
    int codePointCount(int beginIndex , int endIndex)
    返回此 String 的指定文本范围中的 Unicode 代码点数。文本范围始于指定的 beginIndex,一直到索引 endIndex - 1 处的 char。因此,该文本范围的长度(用 char 表示)是 endIndex-beginIndex。该文本范围内每个未配对的代理项计为一个代码点。
    常见的求整个字符串长度的用法:

    String str="hello";
            int n=str.codePointCount(0, str.length());
            System.out.println(n);
    展开全文
  • Java中码点和代码单元

    万次阅读 多人点赞 2018-10-26 23:54:39
    Java中码点和代码单元 前言 码点和代码单元这两个概念还是在《Java核心技术 卷一》发现的,这也是我看过这本书里面前五章中比较有用的一个知识点(PS:毕竟Java开发都一年了,基础应用都差不多了),以前都没听过...

    Java中码点和代码单元

    前言

    码点和代码单元这两个概念还是在《Java核心技术 卷一》发现的,这也是我看过这本书里面前五章中比较有用的一个知识点(PS:毕竟Java开发都一年了,基础应用都差不多了),以前都没听过。

    概念

    在介绍这个概念之前,建议大家先去看看一些编码方面的知识。《编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)》,这篇文章讲的挺好。每个国都有把自己的语言编码,于是出现了各种各样的编码(美国的ASCII,中国的GBK,俄罗斯的KOI-8等),如果你不安装相应的编码,就无法解释相应编码想表达的内容。最后 ISO 一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。
    而在设计Java时,当时的Unicode才发布1.0版本,字符连65536代码值一半都不到,为了方便后面增加,Java使用了16位的Unicode字符集。但是没想到,随着计算机的普及,各国计算机的发展,16位也放不下人类的集体文化财富。
    码点是指一个编码表中的某个字符对应的代码值。Unicode的码点分为17个代码级别,第一个级别是基本的多语言级别,码点从U+0000——U+FFFF,其余的16个级别从U+10000——U+10FFFF,其中包括一些辅助字符。
    基本的多语言级别,每个字符用16位表示代码单元,而辅助字符采用连续的一对连续代码单元进行编码。

    代码实例

    下面hi𝕆中的𝕆实际上是是一个辅助字符,它实际上占用了两个char来保存,这个字符串中总共为4个char,3个代码点。

        public static void main(String[] args) {
            String hello = "hi𝕆";
            System.out.println(hello.length());//4
            System.out.println(hello.codePointCount(0, hello.length()));//3
        }
    

    下列代码中显示了每个char的16进制和每个代码单元的16进制。

        public static void main(String[] args) {
            String hello = "hi𝕆";
            int length = hello.length();
            for(int i=0;i<length;i++) {
                char charAt = hello.charAt(i);
                System.out.println(Integer.toHexString(charAt));
            }
            int codePointCount = hello.codePointCount(0, length);
            for(int i=0;i<codePointCount;i++) {
                int index = hello.offsetByCodePoints(0,i);
                int charAt = hello.codePointAt(index);
                System.out.println(Integer.toHexString(charAt));
            }
        }
    

    分为4个代码单元

    68
    69
    d835
    dd46
    

    3个码点

    68
    69
    1d546
    

    而码点转化为字符串则需要使用一些特殊的API,比如:
    判读是不是一个码点,上文的d835或者dd46肯定不是

    Character.isValidCodePoint(codePoint)
    

    码点转化为字符串:

    char[] chars = Character.toChars(0x1d546);
    String str = new String(chars);
    System.out.println(str);//𝕆
    
    展开全文
  • c#代码单元测试

    千次阅读 2019-04-29 14:52:52
    c#代码单元测试 在原项目上新建测试项目 选择测试项目 打开测试资源管理器 在测试方法里写入你要测试的内容(原项目的类,方法等),运行 运行完成后可查看打印输出 ...
  • 一个代码单元是一个用来存储编码码点的一部分的单元。在UTF-8中,一个代码单元是8位;在UTF-16中,一个代码单元是16位。 单独的一个代码单元可能代表一个完整的码点,也可能是一个码点的一部分。 例如,一个雪人字符...
  • java字符串由char序列组成,char数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元,大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元来表示,length方法返回的是采用UTF-16...
  • 什么是代码点与代码单元? 代码点(Code Point):在 Unicode 代码空间中的一个值,取值 U+0000 至 U+10FFFF,代表一个字符。 其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。 代码单元(Code Unit...
  • 关于代码点和代码单元的一些问题

    千次阅读 2016-11-17 20:39:29
    在Java字符串处理时,在使用length和charAt方法时,应该格外小心,因为length返回的是UTF-16编码表示下的代码单元数量,而非我们所认为的字符的个数,charAt方法返回的是指定位置处的代码单元,而非我们所认为的字符...
  • 现在讨论Java中和String有关的代码点和代码单元。Java中的字符串有char序列组成,在前面讲过,char数据类型是一个采用UTF-16编码表示的Unicode代码点的代码单元。我们常用的大多数Unicode字符使用一个代码单元就可以...
  • 最近在核心技术上看到代码点与代码单元的说法,网上看了很多总感觉说得复杂,最后总结了一下,纯属个人见解。  Unicode标准的核心是一个编码字符集,它为每一个字符分配一个唯一数字。Unicode标准始终使用16进制...
  • 代码点和代码单元的关系要了解 Crystal Reports for Visual Studio 2005 支持 GB18030 和 Unicode 的方式,很重要的是要了解代码点和代码单元的关系。代码点和代码单元在每种编码形式中,代码点被映射到一个或多个...
  • 任意Unicode字符都是一个码点,大多数常用的Unicode码点由一个char代码单元组成,辅助字符码点由两个char代码单元组成。 
  • 代码点和代码单元 这部分属于Unicode的范畴:Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。 在表示一个Unicode的字符时,通常会用“U+”然后紧接着一组十六进制的数字来表示这一个字符。...
  • Java Core的3.6.6有关代码点和代码单元的概念可能让很多同学迷惑,在这里做一点说明。 Java char数据类型实际上采用UTF-16编码表示的Unicode的代码单元 String str = "你好!"; 这里str中的第一个代码单元是...
  • 代码单元:表示8位一个字节,也就是一个char字符 eg: String ss="12344546"; ss.length //得到代码单元的长度 ss.charAt(5)//得到第6 个代码单元为'5' 代码点:表示Unicode编码 int index = ss....
  • char:java中,char类型为16位,原本用于表示一个字符。但是后来发现,16位已经不够表示所有的字符,所以后来发展出了用代码点表示字符的方法。...代码单元:对代码点进行编码得到的1或2个16位序列(UTF-16)。其
  • 代码点与代码单元

    千次阅读 2014-08-08 00:12:06
    代码点可理解为字符。一个代码点就是一个字符
  • 1. 解释一 char:Java中,char类型为16个二进制位,原本用于表示一个字符。但后来发现,16位已经不够表示所有的字符,所以后来发展出了代码点表示字符的方法。 代码点(code point):是指编码字符集中... 代码单元
  • JavaScript字符串由16位的代码单元组成,而不是由Unicode代码点组成 JavaScript使用两个代码单元表示216及其以上的Unicode代码点。这两个代码单元被称为代理对。 代理对甩开了字符串元素计数,length、charAt、...
  • 代码点指编码表(比如Unicode)中某个字符的代码值(数字),在Unicode标准中,代码点采用十六进制书写,书写时前面加U+,比如U+0041是字母A的代码点. Unicode的代码点可以分为17个代码级别。第一个代码级别称为基本的...
  • 代码点和代码单元的理解-Java

    千次阅读 2019-04-03 00:20:16
    代码点(code point):与一个编码表中的某个字符对应的代码值. 在Unicode标准中,代码点采用十六进制书写,并加上前缀U+,例U+0041就是字母A的代码点. Unicode的代码点可以分成17个代码级别(code plane). 第一个代码...
  • 最近看core java,之前一直不明白,看了不少帖子和博客,总算搞明白了。 Java中,char[]、String、StringBuilder和StringBuffer类中采用了UTF-16编码,使用U+0000~U+FFFF来...大多数的常用Unicode字符使用一个代码单元
  • 背景 在设计Java时决定采用16位的Unicode字符集,因为当时只用不到65536一半的大小就可以存放下Unicode...因此出现了代码点。 代码点 指与一个编码表中的某个字符对应的代码值。在Unicode标准中,代码点采用十六进
  • Jupyter notebook操作代码单元

    千次阅读 2019-04-20 09:44:16
    在这个notebook中,你将尝试操作代码单元格 首先,运行以下代码单元格。就像之前我所提到的,你可以通过选中并点击运行(run cell)按钮来运行代码单元格。另外,你也可以通过快捷键 Shift + Enter 来运行。使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,132
精华内容 18,052
关键字:

代码单元