首页 > 其他分享 >字符串编码-Unicode

字符串编码-Unicode

时间:2023-07-30 16:01:04浏览次数:36  
标签:编码 UTF 字节 字符 10xxxxxx Unicode 编号 字符串

作为程序员难免会与字符串打交道,而字符串的编码方式接触得最多的就是ASCII码了,然而ASCII码每个字母对应1Byte,因此字母总量最多只有256个,这是不能满足世界上众多的文字的需求的,因此,Unicode编码的出现便是必然的。

Unicode

Unicode 为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x000000 到 0x10FFFF (十六进制),有 110 多万,每个字符都有一个唯一的 Unicode 编号,这个编号一般写成 16 进制,在前面加上 U+。例如:“马”的 Unicode 是U+9A6C。Unicode 就相当于一张表,建立了字符与编号之间的联系。

然而Unicode只是给出了一份字符与编号的映射表,没有定义如何将这份表落实到二进制表示中,要用几个字节来表示编号呢?方案主要有UTF-8,UTF-16,UTF32。

UTF-8

UTF-8是当下最为流行的编码方式,为了节省字符串容量,UTF-8使用了变长字节来表示,编号小的字符用较少的字节表示,编号较大的字符使用较多字节表示,字节数从1到4不等。

1.对于单字节的符号,字节的第一位设为 0,后面的7位为这个符号的 Unicode 码,因此对于英文字母,UTF-8 编码和 ASCII 码是相同的。 

2.对于n字节的符号(n>1),第一个字节的前 n 位都设为 1,第 n+1 位设为 0,后面字节的前两位一律设为 10,剩下的没有提及的二进制位,全部为这个符号的 Unicode 码 。

     例如,1个字节:0xxxxxxx

    2个字节:110xxxxx  10xxxxxx

    3个字节:1110xxxx  10xxxxxx  10xxxxxx

    4个字节:11110xxx  10xxxxxx  10xxxxxx

UTF-16

UTF-16是Windows系统开发中常见的字符串编码方式,也是利用变长字节来表示字符。

1.编号在 U+0000 到 U+FFFF 的字符(常用字符集),用两个字节表示。 

2.编号在 U+10000 到 U+10FFFF 之间的字符,用四个字节表示。

UTF-32

UTF-32最简单,直接一刀切,所有字符都用4个字节表示,因此很少会在数据库中使用,太费空间了。

 

标签:编码,UTF,字节,字符,10xxxxxx,Unicode,编号,字符串
From: https://www.cnblogs.com/mshentaiBlog/p/17591553.html

相关文章

  • 7.30 day7字符串
    60+10+100+0=170连续2天没写出来简单题了,不过我的字符串是真的弱,趁着这次复习一下T1倒序考虑即可T2之前模拟赛里有,但是只记得做过不记得做法了定义一个字符串的本质是\(A_x=x-pre(A_x)\)\(pre(x)\)指上一次出现\(x\)的位置,如果是第一个字符则是0两个字符串相等的条件是本......
  • 3-2 编写一个函数 escape(s, t),将字符串 t 复制到字符串 s 中,并在复制 过程中将换行
    ArchlinuxGCC13.1.1 202304292023-07-3012:57:46星期日 点击查看代码#include<stdio.h>voidescape(chars[],chart[]){inti,j;i=j=0;while(t[i]!='\0'){switch(t[i]){case�......
  • 【Json】字符串自动生成C#类
    前言最近做项目需要和其他项目组同事做对接,需要先把相关接口的出入参定义好,再去做具体的实现。这里,既然出入参都定义好了,何不根据json直接生成好相关的类、契约层、应用等代码呢。参考1、使用VS,编辑->选择性粘贴->将JSON粘贴为类2、使用Microsoft.JScript.dll类库,https://www.......
  • HotSpot编译执行硬编码生成
    目录背景源码指令解析硬编码总结背景在一个技术群里,有一个哥们对着hotspot的源码问了个问题:源码看一下对应的源码://来源:hotspot/src/cpu/x86/vm/assembler_x86.cppvoidAssembler::notl(Registerdst){intencode=prefix_and_encode(dst->encoding());emit_int8(......
  • EC11编码器消抖
    前言之前在网上看到一篇文章优雅的对旋转编码器消抖(EC11,正交)-知乎(zhihu.com)感觉大佬用的方法挺不错的,这里在STM32上使用一下看下效果。消抖原理消抖的核心思路:A脚设置为上升下降沿均会进中断,下降上升一个变换周期,判断这个周期的A脚,B脚的始末状态,来判断正反转一次。......
  • 2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数
    2023-07-29:给你一个由数字组成的字符串s,返回s中独特子字符串数量。其中的每一个数字出现的频率都相同。答案2023-07-29:大体步骤如下:1.初始化变量base为固定值1000000007,用于计算哈希码。2.创建一个空的哈希集合set,用于存储独特子字符串的哈希码。3.创建一个长度为10的整数数组cn......
  • 2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数
    2023-07-29:给你一个由数字组成的字符串s,返回s中独特子字符串数量。其中的每一个数字出现的频率都相同。答案2023-07-29:大体步骤如下:1.初始化变量base为固定值1000000007,用于计算哈希码。2.创建一个空的哈希集合set,用于存储独特子字符串的哈希码。3.创建一个长度为10的整......
  • C语言字符串的常用操作
    C语言是一种非常流行的编程语言,它支持各种数据类型,包括整数、浮点数、字符和字符串等。在C语言中,字符串是一种特殊的数据类型,它由一系列字符组成,以\0字符结尾。本文将介绍C语言中字符串的相关知识,包括字符串的定义、初始化、赋值、输入输出、比较、拼接、查找和替换等。一、字符......
  • html实体编码
    1、介绍html虽然不是程序语言,但也存在某些预留字符用于结构描述,以及某些无法键盘输入的字符。因此也需要类似\的转义。在html中,称为实体编码,与\转义有所不同。2、html实体编码html实体编码有三种格式。这三种作用是相同的。实体名称&nbsp;十进制实体编号&#160;八进制实......
  • url编码
    1、介绍(1)编码方案url中存在某些敏感字符作为其结构描述符,如果要表达敏感字符作为普通文本,需要进行转码,即url编码。url编码是将字符转为utf-8,然后对每个字节前加%字符。一般,会对url结构描述符、ascii无法直接表达的字符、以及超出ascii编码的字符进行转码,而其他是否转码均可。......