美文网首页
字符编码

字符编码

作者: userheng | 来源:发表于2020-04-07 14:39 被阅读0次

Unicode字符集

在unicode出现之前,有很多编码标准,如:

编码标准
英语语系 ASCII (7个bit表示一个字符)
西欧 ISO 8859-1 (8个bit表示一个字符)
中国 GBK

多种编码标准产生了以下问题:

  1. 某个字符可能不在某个编码标准中。
  2. 某个字符在不同的编码标准中,其编码值不同。

Unicode字符集中包含了全球所有的通用字符,每个字符都有一个编码值,但并没有指明该字符如何在计算机中存储。

Unicode主要使不同编码标准之间的相互转换成为可能。

Unicode字符集的实现

几个专业术语的介绍:

  • 码点值:字符的unicode编码值
  • 码点单元:编码一个字符所需的基本单位,如UTF-16一个码点单元占16位即2字节。

UTF-16

UTF-16编码是Unicode字符集其中的一种实现,字符Unicode值到UTF-16编码值的转换示例如下:

字符 Unicode值(16进制) UTF-16编码值(字节之间的值以逗号分隔)
A 0x0041 0,65
0x8861 -120,97

Java char类型与UTF-16

Java语言采用的是UTF-16编码标准,一个char占两个字节,恰好与UTF-16的一个码点单元所占大小相同。

一个码点单元16位,其值范围0~65535。可以容纳65535个字符,但后来又扩充了大量的新增字符(如中文、韩文、日文的表意字符)。一个char自然就无法表示这些字符了,至少需要一对char来表示。

如字符:"𝕆",其码点值(Unicode编码值)为:\u1d546。需要\ud835和\udd46两个码点单元来表示。

        /*
         * 两个char才能表示该字符,故只能用字符串引用。即 new String(new char[] {'\ud835','\udd46'})
         */
        String cc = "𝕆";

        System.out.println("cc的码点单元:" + cc.length() + "个");// 2

        // cc是一个字符,码点值(Unicode编码值)自然是1
        System.out.println("cc的码点值有" + cc.codePointCount(0, cc.length()) + "个");// 1

        int codePonitValue = cc.codePointAt(0);
        System.out.printf("cc的码点值%d, 十六进制为%x", codePonitValue, codePonitValue);// 120134 1d546
        
        
        System.out.println("");
        byte[] bytes = cc.getBytes("UTF-16");
        for (byte b : bytes) {
            System.out.print(b+",");//-2,-1,-40,53,-35,70,  
        }
        System.out.println("");
        
        //-2,-1应该是UTF-16的前缀标志
        System.out.println(new String(new byte[] {-40,53,-35,70}, "UTF-16"));//𝕆

程序输出:

cc的码点单元:2个
cc的码点值有1个
cc的码点值120134, 十六进制为1d546
-2,-1,-40,53,-35,70,
𝕆

相关文章

  • 部分知识点

    chr(编码值) - 将字符编码转换成字符 ord(字符) - 获取字符对应的编码值 可以将字符编码放到字符串中便...

  • 字符编码知识梳理

    [toc] 字符编码: 字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定...

  • Python正式课第十三天

    一、文件操作与字符编码 1. 字符编码 编码 将字符转换为对应的二进制序列的过程叫做字符编码(字符->二进制01)...

  • 字符编码

    一. 什么是字符编码? 字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为...

  • python 高级方法

    Python的字符串类型 字符编码方法 查看Python中的字符串编码名称,查看系统的编码 源文件字符集编码声明:...

  • Java内存中的文本编码

    1、编码简介 1.1 概念简析:字符、字符集、编码字符集、Code Point、Code Unit和字符编码格式 ...

  • python 字符 编码 简述

    字符编码问题很简单,当你可以区分以下几种概念之后: 字节编码与字符编码 字节串与字符串 文件编码、IDE编码、其他...

  • 13.Python之字符编码

    Python之字符编码 字符编码字符编码记录的是二进制与文字的对应关系。 常见的字符编码ASCII码:包含英文字母...

  • 笔记-encode与decode

    字节串-->decode('原来的字符编码')-->Unicode字符串-->encode('新的字符编码')--...

  • Python基础(二)-字符串和编码

    字符串和编码 字符编码 字符编码也称字集码,是把字符集中的字符编码为指定集合中某一对象,以便文本在计算机中存储和通...

网友评论

      本文标题:字符编码

      本文链接:https://www.haomeiwen.com/subject/jvogphtx.html