首页 > 其他分享 >unicode编码转换压缩为utf-8编码

unicode编码转换压缩为utf-8编码

时间:2023-08-07 22:59:29浏览次数:32  
标签:编码 utf 字节 -- 10XXXXXX unicode

Unicode编码也可称为万能码,它将世界上所有的符号都使用2或4个字节(即2的16/32次方)来表示,每个字符的二进制表示长度固定为16/32位,如此确实可以兼容所有的字符编码,但是4个字节的长度造成了存储容量的极大浪费,许多常用的字符往往只需要一个字节(如ASCII美国信息交换标准代码),于是utf-8编码应运而生,**它本质上是对Unicode编码的一个压缩**。
以4个字节的ucs4为例,一个字符无论其十六进制表示的值大小,都需要4个字节来存储。而utf-8则利用这一点,根据码值范围来决定编码占用的字节数,具体对应方式如下所示:
unicode码值范围 utf-8字节数 转化模板
0000--007F 1个字节 0XXXXXXX
0080--07FF 2个字节 110XXXXX 10XXXXXX
0800--FFFF 3个字节 1110XXXX 10XXXXXX 10XXXXXX
10000--10FFFF 4个字节 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

那么具体的转换过程是什么呢,我们来举一个例子:

  • B对应的unicode码为0x0042,因此应该按照第一个行的模板来转化,即把B的unicode码的后七位映射到X上,就得到01000010
  • 木对应的unicode码为0x6728,因此应该按照第三个行的模板转化,即把16位的0110011100101000映射到16个X上,得到11100110 10011100 10101000

其余的字符依此类推,如果位数不够就在前面补0.
从这里也可以看到,为什么中文utf-8表示大多是三个字节?因为unicode编码中中文码值范围就是0800--FFFF,转化的时候应用第三个模板,即三个字节。

标签:编码,utf,字节,--,10XXXXXX,unicode
From: https://www.cnblogs.com/android-16/p/17612957.html

相关文章

  • FAST协议详解1 不同数据类型的编码与解码
    一、概述FAST协议里不同的数据类型在编码时有非常大的区别,比如整数只需要将二进制数据转为十进制即可,而浮点数则需要先传小数点位数,再传一个整数,最后将二者结合起来才是最终结果。本篇使用openfast自设了一些数据并编码成FAST数据,再对这些FAST数据进行人工解码,以图看懂FAST协议是......
  • PCM编码音频
    whatPCM(PulseCodeModulation)是一种用于音频信号编码和解码的数字化方法。how在PCM编码中,音频信号被采样,并将每个采样点的振幅量化为固定精度的数字值。这些数字值被表示为二进制代码,并以连续的方式传输或存储。PCM编码过程包括以下几个步骤:采样(Sampling)将连续的音频信号转换为离......
  • 专业视频和音频编码应用Media Encoder 2023(ME2023)mac中文版
    MediaEncoder是一个可定制的专业编辑器。在开发过程中,您可以不断调整和更新工具。它具有独特的动态编辑体验,您可以将其设置为默认值。这是一个完全免费的多语言工具,支持扩展。为您提供一个多平台编辑器平台,可以使用所有现有的,新的和改进的。→→↓↓载MediaEncoder2023Mac......
  • 8-7|TypeError: The fill character must be a unicode character, not bytes
    这个错误表示你正在尝试使用一个字节串作为填充字符,但Python的填充函数(如`ljust`,`rjust`,`center`等)需要一个Unicode字符。如果你需要对一个字节串进行填充,你可以先将它解码为字符串,进行填充操作,然后再编码回字节串。以下是一个例子:```python#原始字节串data=b"hello"#......
  • 分享一个在线二进制编码网站,特别方便好用
    二进制文件是什么二进制文件是一种计算机文件,其中的数据以二进制形式编码。在计算机系统中,所有的数据和指令都以二进制形式表示。二进制文件通常包含可执行代码、程序数据、图像、音频、视频等多种类型的信息。与文本文件不同,二进制文件中的数据不以可读的字符形式表示,而是以字......
  • 001、认识C语言,第一次编码
    001、认识C语言,第一次编码​ C语言常用于底层开发(应用层之下【操作系统、驱动】)写C语言代码的步骤:创建一个项目;创建一个源文件(xxx.c)【头文件:xxx.h】;写代码;编译代码(ctrl+F7);运行代码(ctrl+F5【不调试】、F5【调试】)主函数(一个工程中只能有一个主函数):/***写C语言的第一步......
  • 龙邱512正交编码器
    基本概念龙邱的512线正交编码器,工作电压在3.3v-5v。我们只需要关注该款编码器的LSB及DIR引脚。LSP:该引脚在编码器转动时,会输出步进脉冲,在不同的转速下,步进脉冲的数量是不同的。所以我们可以设置一个定时器,把定时器的时钟输入通道改为外部引脚输入,这样我们就可以把单片机时钟......
  • C++中BigEden、SmallEden编码
    基本概念大端小端表示,一个数字在内存中或硬盘上记录时,是高位在前或在后,高位在前就是大端(BigEden),在后就是小端(samllEden)。我们日常记录和代码里定义一千二百三四如:inta=1234;就是大端记录。如果是小端的一千二百三十四:就是"4321"了。 通常应用一般而言,平台使用的大......
  • jsp各部分编码的含义
    pageEncoding是jsp文件本身的编码,       第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,(jsp文件的编码,pageEncoding是否一致),结果是由指定的编码方案翻译成统一的UTF-8JAVA源码(即.java),如果pageEncoding设定错了,或没有设定(在JSP标准的语法中,如果pageEncoding属......
  • 如何解决pytest参数化时出现的Unicode编码问题?
    前言Pytest是一个广泛使用的Python测试框架,通过参数化测试(ParameterizedTesting)功能,可以轻松地为测试用例提供多组输入数据。然而,当我们尝试在参数化测试中使用中文作为测试用例的IDs时,有时会遇到Unicode编码问题,导致测试报告中显示的是乱码。本文将详细解释这个问题的原因,并提供......