ASCII Unicode UTF-8 字符集 字符编码

ASCII Unicode UTF-8 字符集 字符编码

  • 基本概念
    • 字符
    • 字符集
    • 字符编码
  • 字符集和字符编码
    • ASCII 字符集
    • Unicode 字符集
    • UTF-8
  • 附录

基本概念

字符集为每个字符分配了一个唯一的编号,通过这个编号就能找到对应的字符。在编码过程中我们经常会使用字符,而使用字符的前提就是把字符放入内存中,而放入内存中的仅仅是字符的编号,而不是真正的字符实体。
这就引出一个问题,如何将这些字符编号存入内存中,还能让计算机通过这些编号找到对应的真实字符实体。

字符

字符(Character),简单点说,就是在在计算机和电信技术中各种文字和符号的总称。一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号、一个图形符号或者控制符号等。

字符集

字符集(Character Set),就是多个字符的集合。不同的字符集包含的字符数量是不一样的,包含的字符也不一样,对应的编码方式也不同。例如,GB2312 是中国国家标准的简体中文字符集(其中包含简化汉字6763个+一般符号+序号+数字+拉丁字母+日文假名+希腊字母+俄语字母+汉语拼音符号+汉语注音字母,共7445个字符),而 ASCII 字符集只包含了128个字符(其中主要字符是英文字母+拉丁字母和一些简单的控制字符)。
另外,还有其他常用的字符集,如 GBK 字符集、Unicode 字符集等。

字符编码

字符编码(Character Encoding),是指一种映射规则,根据这个映射规则可以将某个字符映射成其他形式的数据以便在计算机中存储和传输。例如 ASCII 字符编码规定使用单字节中低7位比特去编码所有字符,在这个编码规则下字母 A 的编号是 65(ASCII码),因此写入存储设备的二进制值是 01000001 。每种字符集都有自己的字符编码规则,常用的字符集编码规则还有 UTF-8 等。

字符集和字符编码

ASCII 字符集

上个世纪60年代,美国制定了一套字符编码规则,对英文字符和二进制位之间的关系做了统一规定,这套编码规则就是 ASCII 编码,一直沿用至今。
ASCII 编码一共规定了128个字符的编码规则,这128个字符形成的集合就叫做 ASCII 字符集。在 ASCII 编码中,每个字符占用一个字节的后面7位,最前面的一位规定为0。下图是 ASCII 字符集中字符和码值的对应关系:

ASCII字符集
英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。而且,欧洲小国家特别多,每个国家可能都有自己的语言体系,语言环境十分复杂,为了解决这个问题,这些欧洲国家使用了一套延伸的 ASCII 字符集,利用字节中闲置的最高位编入新的符号,称为 EASCIIExtended ASCII):在 EASCII 中表示的256个字符中,前128字符和 ASCII 编码表示的字符完全一样,后128个字符每个国家或地区都有自己的编码标准。例如:130(二进制为 10000010)在法语编码中代表了 é,在希伯来语编码中代表了字母 Gimel (ג),在俄语编码中又会代表另外一个字符。
根据这个规则,就形成了很多子标准:ISO-8859-1ISO-8859-2 等。这些子标准适用于欧洲不同的国家地区。

至于亚洲国家的文字和符号那就更多了,光汉字就多达10万左右,如果按照 ASCII 码单字节表示,即使用上了最高位也只能表示256种字符,肯定是不够的,所以必须使用多字节来表示一个字符,因此就出现了后面的 Unicode 字符集和 GB2312 等字符集。比如,GB2312 字符集,使用两个字节表示一个汉字,所有理论上最多可以表示 65536 个字符(2^16)。

Unicode 字符集

ASCII 码字符集总共才能容纳256个字符,对于全世界各国语言来说,很难全部包含在内,所有就出现了 Unicode 字符集。

Unicode字符集是一个很大的字符集合,现在的规模可以容纳100多万个符号,每个符号的编码都不一样。

需要注意的是,Unicode 只是一个字符集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何编码如何存储。这就造成了两个问题:

  • 如何才能区分 UnicodeASCII ?计算机如何知道三个字节表示一个字符而不是分别表示三个字符呢?
  • 已经知道英文只用一个字节表示就够了,如果统一采用 Unicode 规定,每个字符都要用三个字节来表示,那么每个英文字符前都必须有两个字节是0,这对应存储来说是极大的浪费。

因此就出现了 UTFUnicode Transformation Formats)系列的编码规则。UTF编码规则具体规定了 Unicode 字符集中的字符是如何编码的。

总结:Unicode 是一个很大的字符集,它只规定了这个字符集中每个字符对应的码值是多少,具体的编码规则是由 UTF 系列的编码规则实现的。

UTF-8

它是一种编码规则,互联网的普及,强烈要求出现一种统一的编码方式。UTF-8 就是在互联网上使用最广泛的一种 Unicode 的实现方式(其他方式还有 UTF-16UTF-32,不过基本不用),这里的关系是:UTF-8 编码是 Unicode 的实现方式之一

UTF-8 是一种针对 Unicode 的可变长度字符编码规则,又称万国码。UTF-8 用1-4个字节编码 Unicode 字符,根据不同的字符而变化字节长度(UTF-8 编码可以容纳 2^21 个字符,总共200多万个字符)。

UTF-8 的编码规则只有两条:

  1. 对于单字节的符号,字节的第一位设为0,后面7位为这个字符的 Unicode 码,因此对于英文字母来说,UTF-8 编码和 ASCII 码是相同的。
  2. 对于 n 字节的字符(n > 1),第一个字节的前 n 位都设为 1,第 n+1 位设为 0,后面字节的前两位一律设为 10,剩下的没有提及的二进制位,全部为这个字符的 Unicode 码。

下表总结了这个编码规则,字母 x 表示可用编码的位:

UTF 字节数UTF编码方式
一个字节0xxxxxxx
两个字节110xxxxx 10xxxxxx
三个字节1110xxxx 10xxxxxx 10xxxxxx
四个字节11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

下面以汉字 为例,演示如何实现 UTF-8 编码:
已知 Unicode 编号是 U+4E25,换算成二进制是 1001110 00100101(注意,这是它的 Unicode 值,至于以什么样的二进制值存储和计算机中进行传输是通过编码方式来的) ,根据上表可以得出,存储这个字需要三个字节(两个字节的编码方式,除去首位固定的 11010,剩下的位数不够存放 1001110 00100101),即格式应该是 1110xxxx 10xxxxxx 10xxxxxx,然后,从 的最后一个二进制位开始,依次从后往前填入格式中的 x,多出的位补 0,这样就得到了 UTF-8 编码值是 11100100 10111000 10100101,换算成十六进制就是 E4B8A5

在这里插入图片描述

附录

如果你希望查看完整的 Unicode 字符集,以及各种编码方式,可以戳这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548166.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【工具分享】FONIX勒索病毒解密工具

前言 FONIX勒索软件首次出现在2020年6月,并迅速成为勒索即服务(RaaS)平台的一部分。尽管它最初的影响力有限,FONIX从2020年11月开始显著增加了攻击频率。FONIX以其复杂的加密方法著称,使用了AES、Salsa20、ChaCha和RS…

阿博图书馆管理系统:SpringBoot实现细节

第三章 系统分析 通过对系统功能模块分析可以得知,主要是对项目元素组合、分解和更换做出相应的单元,再通过系统模块来规划出一个原则,系统的设计首先是围绕用户需求进行开发设计的,主要是为了能够更好的管理信息和方便用户&#…

002、视频格式转换

下载地址 http://www.pcfreetime.com/formatfactory/CN/index.html

高校教师成果管理小程序的设计与实现springboot(lw+演示+源码+运行)

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…

怎么把word转化为ppt?这2款在线转换工具不容错过!

怎么把word文档转化为ppt? 在当今快节奏的办公日常中,高效处理文档格式转换已成为职场人必备的一项技能。当我们要进行演示报告、汇报工作,或是分享知识时,经常需要把Word文档转换为PPT演示文稿。然而,这个看似简单的…

「JavaScript深入」聊一聊 new操作符具体干了什么?

JavaScript深入 — new操作符 概念流程手写new操作符 概念 在JavaScript中,new 操作符用于创建一个给定构造函数的实例对象 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) } cons…

WT2605C蓝牙语音芯片智能对话模型 人机互动 让机械设备更智能

随着人工智能技术的飞速发展,AI语音芯片在机械设备领域的应用日益广泛。WT2605C作为一款集成了在线TTS(Text-To-Speech,文本到语音)功能的蓝牙语音芯片,凭借其卓越的性能和广泛的应用前景,为机械设备产品带…

C++简单缓冲区类设计

目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中,设计静态和动态缓冲区类时,需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…

JAVA使用Scanner类的nextLint()方法无法正确读取中文。

在练习的时候,我发现我使用Scanner类的nextLint()方法无法正确读取到中文了。检查了我的idea编辑器,用的编码格式也是”utf-8“。所以编码格式没有问题。 问题如下棉两张图所示,我输入宝马后,控制台不打印…

外包干了2年,收获不少。。。

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

STM32F407单片机编程入门(二十七)以太网接口详解及实战含源码

文章目录 一.概要二.单片机以太网系统基本结构1.OSI 七层模型2.单片机实现以太网功能组成 三.STM32F407VET6单片机以太网内部结构1.MII接口介绍2.RMII接口介绍 四.LWIP TCP/IP协议栈介绍五.PHY收发器LAN8720介绍1.LAN8720内部框图2.LAN8720应用电路3.LAN8720以太网模块 六.Cube…

测试的底层逻辑

写这篇文章,是希望把我的一些我认为是非常有价值的经验总结出来,能够帮助刚做测试不久的新同事,或者是测试经验丰富的老同事以共享。希望我们可爱的新同事,准备要在测试领域耕耘的伙伴,能够通过我的文章了解到测试的底…

【智慧城市】新中地GIS开发实训项目:华农优秀学生学习成果展示(3)智游江城

华农GIS开发实训项目答辩③-智游江城/一个月学习成果展示 项目名称:智游江城 项目功能 主页面展示 菜单功能 控制台 3D城市 查询 导航 游览路线推荐 测量 资讯

Node的安装和配置

1、安装Node 下载nodejs 链接:下载 | Node.js 中文网 官网下载最新版本:https://nodejs.org/en/download/ 一路点击Next,最后Finish。nodejs一般会下载在C盘里。 下载完成后,可以在cmd中查看安装的nodejs和npm版本,…

【C++】红黑树的封装——同时实现map和set

目录 红黑树的完善默认成员函数迭代器的增加 红黑树的封装红黑树模板参数的控制仿函数解决取K问题对Key的非法操作 insert的调整map的[]运算符重载 在list模拟实现一文中,介绍了如何使用同一份代码封装出list的普通迭代器和const迭代器。今天学习STL中两个关联式容器…

lime使用记录

主要是对预测结果进行可解释 import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_re…

thinkphp6调用微信商户支付-合单支付工具代码开发

合单支付基本在加盟店或是分公司或是营销系统里面常见。他的出现,打破了传统提现支付或是转账支付。他的业务原理其实很简单,就是需要优先申请非普通商户,其次是每个入驻的商户都需要申请普通商户。在这之前一定要申请好对应的场景服务&#…

大学学校用电安全远程监测预警系统

1.概述: 该系统是基于移动互联网、云计算技术,通过物联网传感终端,将办公建筑、学校、医院、工厂、体育场馆、宾馆、福利院等人员密集场所的电气安全数据,实时传输至安全用申管理服务器,为用户提供不间断的数据跟踪&a…

2024年项目经理不能错过的开源项目管理系统大盘点:全面指南

在2024年,随着项目管理领域的不断发展,开源项目管理系统成为了项目经理们提升工作效率的利器。本文将全面盘点几款备受推荐的开源项目管理系统,帮助项目经理们找到最佳选择,不容错过。 在项目管理日益复杂的今天,开源项…

鼎阳加油-IOC关键技术问题的解决记

鼎阳SDS6204示波器EPICS IOC的搭建-CSDN博客 这款示波器在labview下工作的很好,以前搭建逐束团3D系统时连续几个月不间断的工作连接从没断过线,并做过速率测试,单通道时10Hz的波形更新速率都可以达到: 鼎阳SDS6204示波器波形读取…