一文看懂所有字符编码标准

文章目录

  • ASCII
  • 128个符号不够用
    • 欧洲国家
    • 亚洲国家
  • GB2312
  • GBK
  • GB18030
  • Unicode
    • UTF-8
  • QA
    • 最高位b7是什么意思?
    • UTF-8和UTF-16的区别
    • UTF-8和UTF-32的区别

ASCII

ASCII(American Standard Code for Information Interchange)是一种字符编码标准,最初由美国国家标准协会(ANSI)制定,于1963年首次发布。ASCII编码用于将文本字符映射到二进制数值,使得计算机能够理解和处理这些字符。
在这里插入图片描述
在这里插入图片描述

以下是ASCII编码的主要特点:

  1. 字符范围:
    ASCII编码使用7位二进制数(0-127)表示128个字符,包括基本拉丁字母、数字(0-9)、标点符号、控制字符(例如回车、换行)等。
    0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)
    如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;
    通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
    32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
    65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
    同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。

所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;
偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1 。

  1. 扩展ASCII:
    为了满足其他语言和符号的需求,后来提出了扩展ASCII编码,使用8位二进制数(0-255)表示256个字符。这包括了更多的特殊符号、重音符号以及其他语言的字符。

扩展ASCII码
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号 。

  1. 不支持非拉丁字符:
    ASCII主要针对英语和基本的拉丁字母,因此不包含用于表示其他语言(如中文、日文、俄文等)的字符。

  2. 通用性:
    由于其简单、广泛支持的特点,ASCII曾经是计算机系统之间交换信息的基本标准。

虽然ASCII编码在早期计算机系统中非常流行,但随着全球化和对非英语字符的需求增加,它变得不够灵活。因此,后来的字符编码标准,如Unicode,提供了更广泛的字符支持,使得各种语言和符号都能够得到合适的表示。

ACII百度百科

128个符号不够用

欧洲国家

在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号 。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0–127表示的符号是一样的,不一样的只是128–255的这一段。

亚洲国家

至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 2562 = 65536 个符号

GB2312

GB2312(Guójiā biāozhǔn 2312),也称为GB 2312,是中华人民共和国颁布的第一个汉字字符集标准。该标准发布于1980年,是中国国家标准总局颁布的简体字字符集标准之一。GB2312的主要目的是规范简体字的编码,以促进计算机系统和应用程序之间的字符标准化。

以下是GB2312的一些关键特点:

  1. 字符范围: GB2312规定了包括6,763个常用汉字和682个其他字符(包括拉丁字母、数字、标点符号等)的字符集。这些字符被组织成94行、94列的表格,每个表格包含一个字符。

  2. 双字节编码: GB2312采用了双字节编码方案,每个字符用两个字节表示。第一个字节在0xA1到0xF7之间,第二个字节在0xA1到0xFE之间。这种编码方案使得GB2312适用于8位编码系统。

  3. 编码规则: GB2312编码规则按照字符的位置在表格中的行列来确定。每个字符都有一个唯一的编码,其中第一个字节对应表格的行,第二个字节对应表格的列。

  4. 简体字标准: GB2312主要关注简体字,是为了解决简体字的字符标准化问题。由于繁体字较多,后来GBK(汉字内码扩展规范)和GB18030等标准被制定来支持更多字符。

尽管GB2312在中国大陆广泛使用,但它的字符集相对较小,不能涵盖所有的汉字字符。随着计算机和通信技术的发展,后续的字符集标准如GBK和GB18030逐渐取代了GB2312,以满足更多字符的需求。

GBK

GBK(Guójiā biāozhǔn kuòzhǎn),也称为GB18030的前身,是中华人民共和国颁布的汉字字符集标准之一。GBK于1995年发布,是GB2312的扩展,旨在支持更多的汉字字符,并加入了一些繁体字字符。

以下是GBK的一些关键特点:

  1. 字符范围: GBK包含了GB2312的所有字符,以及扩展了约20,000个繁体字和少数民族字符。总体而言,GBK字符集包含了超过87,000个字符。

  2. 双字节编码: 类似于GB2312,GBK也采用了双字节编码方案,每个字符用两个字节表示。这有助于保持向下兼容性,以便GB2312的文本可以在GBK环境中正确处理。

  3. 兼容性: GBK在设计上考虑了向下兼容GB2312,即GB2312中的字符在GBK中有相同的表示。这使得原本使用GB2312的应用程序可以逐渐过渡到使用GBK。

  4. GB18030: GBK的后续版本是GB18030,它是一个更大的字符集,包含了丰富的字符,支持汉字、日文、韩文、藏文等多种语言。GB18030同时兼容GB2312、GBK和Unicode。

  5. 应用领域: GBK在中国大陆广泛应用于各种领域,包括操作系统、数据库、办公软件等。它为中文字符的表示提供了标准,尤其是在包含大量繁体字的场景中。

总体而言,GBK是为了扩展GB2312以满足更多字符需求而制定的标准。随着GB18030的出现,GBK逐渐被GB18030取代,后者支持更广泛的字符集,包括了Unicode的一部分。

GB18030

GB18030是中华人民共和国颁布的字符编码标准,是GBK的扩展,旨在支持更广泛的字符集,包括汉字、拉丁字母、日文、韩文等多种语言。GB18030于2005年发布,是中国国家标准总局颁布的一个国家标准。

以下是GB18030的一些关键特点:

  1. 字符范围: GB18030包含了GB2312和GBK的所有字符,同时还加入了更多的字符,使其成为一个非常庞大的字符集。总体而言,GB18030字符集包含了超过1,000,000个字符。

  2. 双字节和四字节编码: 类似于GBK,GB18030采用了双字节编码方案,每个字符用两个字节表示。此外,GB18030还引入了四字节编码,以支持更多字符。四字节编码使得GB18030能够表示Unicode字符集中的所有字符。

  3. 兼容性: GB18030在设计上考虑了向下兼容GBK和GB2312,即这些字符集中的字符在GB18030中有相同的表示。这使得原本使用GBK和GB2312的应用程序可以逐渐过渡到使用GB18030,而无需大规模修改现有的文本和软件资产。

  4. 多语言支持: GB18030不仅支持汉字,还支持多种语言的字符,包括拉丁字母、日文、韩文等。这使得GB18030成为一个更加通用的字符编码标准。

  5. Unicode兼容: GB18030与Unicode的兼容性较好,能够表示Unicode字符集中的大多数字符。GB18030的设计目标之一是与Unicode保持一致,使得在处理不同字符集时更加方便。

GB18030的推出使得中国的计算机系统更好地支持了不同语言和字符,为全球化和多语言信息交流提供了支持。在使用GB18030时,应用程序需要考虑字符的双字节或四字节表示方式,以确保正确处理各种字符。

Unicode

Unicode是一种字符编码标准,旨在统一世界上各种语言和符号的字符表示。它提供了一个唯一的数字码点(code point)来表示每个字符,包括文字、标点符号、数学符号、技术符号以及世界上各种语言的字符。

以下是Unicode的一些关键特点:

  1. 统一性: Unicode旨在提供一个统一的字符集,覆盖全球范围内的所有书写系统。这包括了几乎所有已知的语言,从基本的拉丁字母到中文、阿拉伯文、希伯来文等。

  2. 唯一码点: 每个字符在Unicode中都有一个唯一的数字码点,用来标识该字符。这个码点通常用16进制表示,例如,拉丁字母"A"的Unicode码点是U+0041。

  3. 多字符集支持: Unicode定义了多个字符集,包括UTF-8、UTF-16、UTF-32等。这些字符集用于在计算机系统中以不同的方式表示Unicode字符。

  4. 向后兼容: Unicode的设计考虑了向后兼容性,以确保新的版本能够与旧版本兼容。这有助于保护现有的文本和软件资产。

  5. 广泛应用: Unicode在计算机领域中得到了广泛应用,包括操作系统、编程语言、数据库、文本处理软件等。它也是互联网上文本通信的标准。

  6. 表情符号和特殊符号: Unicode还包括了各种表情符号(emoji)和特殊符号,使其更适用于现代通信和互联网文化。

Unicode的目标是解决字符编码的碎片化问题,使得不同语言和文化的字符能够在计算机系统中得到一致的表示。UTF-8、UTF-16和UTF-32等编码方案是用来在计算机中存储和传输Unicode字符的具体实现。Unicode的普及促进了全球化信息交流,为各种语言和文化的数字化提供了基础。

UTF-8

UTF-8(Unicode Transformation Format-8)是一种变长字符编码方案,用于表示Unicode字符集中的字符。它是Unicode的一种实现方式,具有以下特点:

  1. 变长编码: UTF-8使用变长编码,即不同的字符可能由不同数量的字节表示。常用的ASCII字符使用一个字节表示,而其他字符可能需要两、三、甚至四个字节。这种设计使得UTF-8在存储和传输文本时能够更灵活地适应不同字符的需求。

  2. ASCII兼容: UTF-8是兼容ASCII编码的。ASCII字符集中的字符在UTF-8中有相同的表示,保持了对现有ASCII文本的向后兼容性。这意味着UTF-8编码的文本可以无缝地包含和表示ASCII文本。

  3. 字节顺序: UTF-8是无字节序的编码方案,因为每个字符都是独立的字节序列。这使得在不同的计算机系统之间更容易地进行文本交换,而无需考虑字节序的问题。

  4. Unicode字符表示: UTF-8可以表示Unicode字符集中的所有字符,包括拉丁字母、汉字、表情符号等。这使得UTF-8成为全球性的字符编码标准,广泛用于互联网、操作系统、编程语言等各个领域。

  5. 空间效率: 对于常用的英文字母和符号,UTF-8使用一个字节表示,与ASCII编码相同。这保持了对ASCII文本的空间效率,而对于其他字符,UTF-8的变长编码方式也能够有效地利用空间。

UTF-8是互联网上最常用的字符编码方式,广泛应用于网页、文本文件、数据库等。它为全球范围内的文本交流提供了一种通用的解决方案,因为它能够表示几乎所有的Unicode字符。

QA

最高位b7是什么意思?

在计算机中,字节是由二进制位(bit)组成的,通常是8位一个字节。对于字节的每个位,我们可以用索引从0到7来表示,其中0是最低位(最右边的位),7是最高位(最左边的位)。

在讨论字节的最高位时,我们通常使用 b7 表示字节的第7位。这个位的值为1或0,取决于具体的上下文和字节的内容。在某些编码方案中,最高位可能用于表示符号、标志或其他信息。

在UTF-8编码中,最高位(b7)通常用于表示多字节字符的起始。UTF-8的编码规则中,以0开头的字节表示单字节字符,而以1开头的字节表示多字节字符的起始字节。因此,最高位为1的字节是多字节字符的开始,而最高位为0的字节是单字节字符或多字节字符的后续字节。

UTF-8和UTF-16的区别

UTF-8和UTF-16都是Unicode编码的实现方式,但它们有一些关键的区别:

  1. 编码方式:
    UTF-8: 使用变长编码,一个字符可能由1到4个字节组成。对于常用的ASCII字符,只需要一个字节;对于其他字符,可能需要多个字节。
    UTF-16: 使用固定长度编码,一个字符总是由2个字节或4个字节组成。基本多语言平面(BMP)中的字符使用两个字节,而辅助平面(Supplementary Planes)中的一些字符需要四个字节。

  2. 对ASCII的处理:
    UTF-8: ASCII字符在UTF-8中使用一个字节表示,与ASCII编码兼容。
    UTF-16: ASCII字符在UTF-16中使用两个字节表示,因为UTF-16以两个字节为单位进行编码。

  3. 空间效率:
    UTF-8: 对于英文和其他主要使用ASCII字符的文本,UTF-8通常比UTF-16更节省空间,因为ASCII字符只需要一个字节。
    UTF-16: 对于包含大量非ASCII字符的文本,UTF-16可能更节省空间,因为大多数字符只需要两个字节。

  4. 字节顺序:
    UTF-8: 是无字节序的编码方案,每个字符都是独立的字节序列。
    UTF-16: 可以具有两种字节序:大端序(Big-Endian)和小端序(Little-Endian)。UTF-16文件通常包含一个字节序标记(BOM),以指示使用的字节序。

  5. 适用范围:
    UTF-8: 在互联网上广泛应用,特别适合处理以英文为主的文本和Web文档。
    UTF-16: 在一些操作系统、编程语言和应用中使用,特别是在处理包含许多不同语言字符的环境中。
    UTF-8适用于多语言文本和互联网传输,而UTF-16适用于需要处理广泛字符集的环境。

UTF-8和UTF-32的区别

UTF-8和UTF-32都是Unicode编码的实现方式,但它们在编码方式和存储上存在一些关键的区别:

  1. 编码方式:
    UTF-8: 使用变长编码,一个字符可能由1到4个字节组成。对于常用的ASCII字符,只需要一个字节;对于其他字符,可能需要多个字节。
    UTF-32: 使用固定长度编码,一个字符总是由4个字节组成。

  2. 对ASCII的处理:
    UTF-8: ASCII字符在UTF-8中使用一个字节表示,与ASCII编码兼容。
    UTF-32: ASCII字符在UTF-32中仍然使用四个字节表示,因为UTF-32是固定长度编码。

  3. 空间效率:
    UTF-8: 对于英文和其他主要使用ASCII字符的文本,UTF-8通常更节省空间,因为ASCII字符只需要一个字节。
    UTF-32: 对于所有字符,UTF-32占用的空间是固定的,每个字符都需要4个字节。这可能导致存储大量文本时浪费空间。

  4. 字节顺序:
    UTF-8: 是无字节序的编码方案,每个字符都是独立的字节序列。
    UTF-32: 可以具有两种字节序:大端序(Big-Endian)和小端序(Little-Endian)。UTF-32文件通常包含一个字节序标记(BOM),以指示使用的字节序。

  5. 适用范围:
    UTF-8: 在互联网上广泛应用,特别适合处理以英文为主的文本和Web文档。
    UTF-32: 用于处理需要大范围字符集的环境,特别是在内存中直接处理字符时,因为它提供了简单的固定长度编码。

UTF-8适用于多语言文本和互联网传输,而UTF-32适用于需要在内存中快速直接操作字符的情况,但可能会占用更多的空间。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于业务功能级别的流量控制

之前产品线上发生过若干次因为tomcat连接池被耗尽而导致宕机的故障,而具体根源原因则各不尽相同。有因为调用和被调用的服务申请相同的分布式锁而导致死锁的,有因为发送内部或外部的JMS消息发生堵塞的,有因为某个存在性能问题的接口被较多调用…

如何使用队列处理 API 速率限制

对于遇到速率限制的应用程序来说也是一个挑战,因为它需要“放慢速度”或暂停。这是一个典型的场景: 初始请求:当应用程序发起与 API 的通信时,它会请求特定的数据或功能。API 响应: API 处理请求并响应请求的信息或执…

linxu重启网络服务失败——Failed to start LSB: Bring up/down networking.

一、出现问题的场景 在虚拟机中的Linux系统启动后,发现没有网络,执行ifconfig 发现自己配置的ens33网卡没有启动。 接着,执行systemctl restart network 重启网络服务失败 查看网络状态,执行 systemctl status network 发现报错…

有什么好用的C/C++源代码混淆工具?

​ 有什么好用的C/C源代码混淆工具? 开始使用ipaguard 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护,防止应用…

圣诞树(动态效果)

一、运行效果 二、制作方法 1.复制代码到Dreamweaver或HBuilder或vscode中 2.点击运行---运行到浏览器---选择你要打开的浏览器 3.打开后会出现这个界面,前四个是固定音乐,最后一个是自主选择的音乐,你可以选择你电脑上的歌曲&#xff0c…

CCF-CSP真题《202309-2 坐标变换(其二)》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202309-2试题名称:坐标变换(其二)时间限制:2.0s内存限制:512.0MB问题描述: 问题描述 对于平面直角坐标…

vue项目中使用axios发送http请求添加header自定义变量出现跨域问题

request代码片段: export const request (api,method,params {},config,responseType {} ) > {let apiToken localStorage.getItem("token");let headers {Authorization: ${apiToken},};if (config?.headers) {headers {...headers,...config…

java:4-7运算符优先级

运算符优先级 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。只有单目运算符(第二行)、赋值运算符(倒数3行)是从右向左运算的。一览表, 不要背&#x…

SecuSphere:一款功能强大的一站式高效DevSecOps安全框架

关于SecuSphere SecuSphere是一款功能强大的一站式高效DevSecOps解决方案,DevSecOps作为一个经过针对性设计的集中式平台,可以帮助广大研究人员管理和优化漏洞管理、CI/CD管道集成、安全评估和DevSecOps实践。 SecuSphere是一个功能全面的DevSecOps平台…

公司办公文件数据\资料防泄密软件系统——自动智能透明加密保护核心数据

天锐绿盾办公文件数据防泄密软件系统是一款自动智能透明加密保护核心数据的软件系统。 PC访问地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是该系统的几个核心特点: 自动智能加密:系统采用自动…

K8s 源码剖析及debug实战(一):Minikube 安装及源码准备

文章目录 0. 引言1. 什么是 Minikube2. 安装 Minikube3. 下载 Go4. 下载 Goland5. 下载 K8s 源码6. 后续 0. 引言 欢迎关注本专栏,本专栏主要从 K8s 源码出发,深入理解 K8s 一些组件底层的代码逻辑,同时借助 debug Minikube 来进一步了解 K8…

HarmonyOS Watch状态变量监听

今天 我们要将 Watch装饰器 状态变量更改通知 那么 关键点 状态变量 就是 更改后页面会响应式更新的响应式数据 我们可以这样写 Entry Component struct Index {State Watch("setName") name:string "小猫猫";setName() {console.log("变量改变&q…

为什么 C 语言被广泛应用于嵌入式系统开发?

为什么 C 语言被广泛应用于嵌入式系统开发? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C 语言的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家&a…

超纯水抛光树脂:光伏行业新技术应用

在清洁能源的领域中,高效太阳能电池,尤其是单晶硅电池,正日益受到重视。这些电池不仅转换效率高,而且耐用性强。然而,它们的制造过程对水质有着极高的要求,这就引入了超纯水的重要性。那么,超纯…

一套UWB精准定位系统源码,java语言开发,基于UWB技术自主研发的高精度人员定位系统源码

一套UWB精准定位系统源码,基于UWB技术自主研发的室内外人员定位系统源码 随着经济的高速发展,现代制造业生产设备日益繁多,生产车间面积广阔,生产工人数量多,存在难以进行有效管理和不便实施全方位风险管控的难题。 人…

kubernetes(k8s) Yaml 文件详解

YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读。 1、查看API 资源版本标签 kubectl api-versions 2、编写资源配置清单 kubectl create -f nginx-test.yaml --validatefalse 2.3 查看创建的po…

MySQL报错:1054 - Unknown column ‘xx‘ in ‘field list的解决方法

我在操作MySQL遇到1054报错,报错内容:1054 - Unknown column Cindy in field list,下面演示解决方法,非常简单。 根据箭头指示,Cindy对应的应该是VARCHAR文本数字类型,字符串要用引号,所以解决方…

与供应商合作:成功供应商管理的六种最佳实践

许多企业低估了他们对外部供应商的依赖程度,也小看了这些供应商关系所涉及的风险。本文将探索企业与外部供应商合作的六种最佳实践,利用它们创建有效的供应商管理流程,从而降低成本和风险,并提高盈利能力。 供应商管理为何重要&a…

jsp页面bootstrap表格设置页面跳转一直在底部

首先介绍一下bootStrap和bootStrap table: bootStrap: Bootstrap是Twitter推出的一个用于前端开发的开源工具包。 它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。 bootStrap table: Bootstrap table 是一款基于 Bootstrap 的 jQue…