字符集

作者: 古星_8cb9 | 来源:发表于2021-08-24 12:11 被阅读0次

一、定义

字符集是一批字符的集合,每个字符对应一个特殊的字符编号,计算机要存储字符,需要通过字符集找到字符编号,并转化为二进制数据存储在内存中。常用的字符集有ASCII 字符集和Unicode字符集。

二、数据的解码和存储过程

字符的存储大致分为俩步,第一是将字符通过特定的字符集转化为字符编号,第二是将字符编号转化为二进制写入内存,解码正好是一个逆过程,从二进制数据转化为编号再转为字符最终显示在屏幕上。
解码的过程中就抛出了一个问题比如有下面一段二进制数据'11001111100101110111001110001'我们如何断词?这段数字代表几个字符?
针对这个问题,主流的有俩种方法处理:

定长处理:

比如ASCII采用一个字节,也就是8bit的长度代表一个字符,
这种方法的缺点是,8位二进制,最多只能容纳2^8个字符

特殊标记处理:

比如utf-8等,在这里需要明确一点,计算机的最小存储单位是bit,一个字节等于8bit,计算机读取一个完整字节的速度最快,所以在存储和解码的过程中都是以B位最小单位的。因此这种解码方法一般是以从最高位开始有几个连续的1来标记第一个字符的二进制编码占用了几个字节的数据。

三、ASCII 字符集

ASCII 总共包含 128 个字符,主要包括英文字母,阿拉伯数字,和一些符号,用 7 个比特位(Bit)恰好能够存储,不过考虑到计算机一般把字节(Byte)作为基本单元,为了操作方便,我们不妨用一个字节(也就是 8 个比特位)来存储 ASCII。这样虽然浪费了一个比特位,但是读写效率提高了。

四、Unicode字符集

Unicode 为了兼容 ASCII,在设计时刻意保留了原来 ASCII 中字符的编号,所以英文字母和阿拉伯数字在 Unicode 中的编号都非常小,用一个字节足以容纳。中是一个汉字,编号比较大,一般要用两个字节才能容纳。
unicode不能单独使用需要配合utf才能正常使用,这是因为,unicode仅仅定义了字符与其对应的字符编号,对于如何断词并没有规定在内,而utf正是用来处理这一部分的,他在unicode的基础上建立一个unicode编号与utf编号的映射关系,而utf编号是一组以特殊标记开头的编号,因此unicode+任意一种utf便可完成字符的存储与二进制数据的解码。
unicode有三种编码方式,utf-8 utf-16 utf-32,后俩种不常用,这里只介绍下utf-8

utf-8

UTF-8 的编码规则很简单:如果只有一个字节,那么最高的比特位为 0;如果有多个字节,那么第一个字节从最高位开始,连续有几个比特位的值为 1,就使用几个字节编码,剩下的字节均以 10 开头。
具体的表现形式为:
0xxxxxxx:单字节编码形式,这和 ASCII 编码完全一样,因此 UTF-8 是兼容 ASCII 的;
110xxxxx 10xxxxxx:双字节编码形式;
1110xxxx 10xxxxxx 10xxxxxx:三字节编码形式;
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字节编码形式。
xxx 就用来存储 Unicode 中的字符编号,不足8位的需要进行补0。

字符 unicode(16) unicode(2) utf-8 utf-8(2)
u4e2d 1001110 00101101 &#x4E2D 110\color{blue}{00}\color{red}{100}10\color{red}{111000}10\color{red}{101101}

*黑色代表几个字节
*蓝色补零
*红色unicode编号

相关文章

  • 2019-04-16字符集 通配符

    修改字符集 永久修改字符集 重启xshell 原因 与远程工具不同字符集 排错 查看xshll字符集查看系统字符集...

  • 字符集与校对规则

    MySQL字符集及校对规则的理解 阅读目录:MySQL的字符集和校对规则 MySQL的字符集 MySQL与字符集 ...

  • MYSQL 8 基本操作之03 (字符集)

    查询服务器字符集 查询服务器字符集校对规则 查询数据库字符集 查询数据库字符集校对规则 查询表的字符集及校对规则

  • 字符集和字符编码

    常常会把字符集和字符编码混起来。下面是一些常用的字符集:ASCII字符集GB2312字符集GBK字符集GB1803...

  • MySQL字符类型学习笔记

    @[toc] 一、字符集和字符编码 1.1、字符集 字符集:字符集就是字符的集合,例如GB2312是中国国家标准的...

  • tr

    转换字符集或者删除字符集 通常与输出命令搭配管道使用 将文本的输入内容中的小写字符集转换成大写字符集 删除指定的字符集

  • MySQL学习 6 字符集

    Mysql 的字符集设置非常灵活,可以设置: - 服务器默认字符集 - 数据库默认字符集 - 表默认字符集 - 列...

  • 字符集

    定义 mysql 的字符集包括 字符集 CHARACTER 和 校对规则COLLATION 两个概念 字符集 : ...

  • Unicode字符集与MYSQL数据库中的字符集

    全文内容概述 字符集是什么?有哪些常见的字符集?字符集的发展和历史知识 Unicode字符集的由来和特点 MYSQ...

  • Mysql 中文乱码问题

    从以下几方面排查: 数据库字符集 表字符集 连接字符集: useUnicode=true&characterEnc...

网友评论

      本文标题:字符集

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