首页 > 其他分享 >各类编码之间的关系

各类编码之间的关系

时间:2023-10-19 20:46:48浏览次数:37  
标签:关系 编码 UTF 字节 Windows GB2312 各类 Unicode

面试遇到的问题,发现我对编码字符集还没系统总结过,今天来学习一下

主要是ASCII、UTF-8、Unicode、gkb等

ASCII

1.American Standard Code for Information Interchange,美国信息交换标注码

2.ASCII字符集是单字节存储,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。
前面0-127是表示固定的英语字符,后面128-255段由其他欧洲国家的字母填充。

Unicode

1.Unicode 为每种语言中的每个字符设定了统一且唯一的二进制编码,将全世界的常用文字都囊括进去,以满足跨语言跨平台进行文本转换和处理的需求。

2.Unicode 将世界上所有的文字用2个字节统一进行编码。现在用的是UCS-2,即2个字节编码,后续拓展所以出现UCS-4, 即4个字节编码,由原先的65536个编码扩展至将近100万编码。

UTF-8

1.UTF-8是Unicode的其中一个使用方式。UTF是 Unicode Tranformation Format,即把Unicode转做某种格式的意思。
使用可变长度字节来储存Unicode字符,使得双字节的Unicode能够在现存的处理单字节的系统上正确传输。

2.utf-8编码规则
如果第一个字节的最高位是0,那么表示占一个字节
如果第一个字节(leading byte)的最高三位是110,那么表示这个字符占2个字节(前面1的个数),第二个字节的最高2位是10
如果第一个字节(leading byte)的最高三位是1110,那么表示这个字符占3个字节,第2和第3个字节的最高2位是10
原理同上,只是第一个字节(leading byte)的最高三位是11110

以此类推,后面蓝色的位置,从后往前填字符在unicode编码下的二进制数,多余的位补0,具体如下

GB2312

1.当计算机引入国内时,编码仅支持英文字母,无法输入中文,因此制定了最早的中文编码集GB2312,全称叫做《信息交换用汉字编码字符集》,它是国家标准总局1980年发布的。

2.中文可以用两个字节表示嘛,一个字节8位。两个字节就是16位,能表示的最大范围是2的15次方,十进制就是32768,能表示3万多汉字呢,这样一来,我们就解决了计算机表示中文的问题。
(GB2312兼容ASCII码)

GBK

1.GB2312编码表是真的不够用啊,随着计算机在各行业内的应用,汉字不够用的窘迫也日益突出,最终在1995年12月1日制定了GBK编码,全称《汉字内码扩展规范》。它在GB2312的基础上收录了21003个汉字。

2.因此,GBK编码是包含GB2312的,当我们需要指明解码方式时,完全可以使用GBK代替GB2312,也就是说我们可以忘掉GB2312了。

带BOM的UTF-8

在Windows系统上,许多Windows程序(包括Windows记事本在内)在保存为UTF-8时,会在文档的开头添加字节0xEF,0xBB,0xBF,这是Unicode字节顺序标记,通常称为UTF-8 BOM。注意,Unicode标准既不要求也不建议使用BOM,说白了这就是Windows系统埋下的坑!如果你在Windows系统上保存了UTF-8 带BOM的文档,那么在Linux或Mac OS上可能会无法正确识别。因此,非常不建议使用Windows自带的记事本去编辑源代码,甚至其他文本文件也最好不要用它编辑,因为其他平台都是使用不带BOM的标准UTF-8编码方式。

Shift_JIS 和 Big5

1.当然,日本人也发明了自己的编码表,用以显示日文,同样也会兼容ASCII码,这就是Shift_JIS编码,而港台地区使用繁体中文,也制作了自己的编码表,称为Big5编码。

参考文章:
编码今生前世
utf-8编码

标签:关系,编码,UTF,字节,Windows,GB2312,各类,Unicode
From: https://www.cnblogs.com/yyghw/p/17760385.html

相关文章

  • 编码的奥秘pdf电子版 Charles Petzold
    编码的奥秘pdf电子版CharlesPetzold作者:CharlesPetzold原作名:Code:TheHiddenLanguageofComputerHardwareandSoftwareISBN:9787111080787连接提取码:fpcn类似微机原理的书,讲的很透......
  • HS编码:电子元件分类的关键 | 百能云芯
    电子元件的HS编码是一种国际通用的分类系统,用于标识和跟踪不同类型的商品和产品。HS代表HarmonizedSystem,即协调制度,这个系统由世界关务组织(WorldCustomsOrganization)维护和管理。它的主要目的是为了简化国际贸易,降低关税和非关税壁垒,促进跨国商品流通。云芯将带您深入探讨......
  • zokeeper和kafka关系
    在部署Kafka时,有必要同时部署ZooKeeper是因为Kafka使用ZooKeeper来管理和协调其集群的状态和配置信息。ZooKeeper是一个分布式协调服务,在Kafka中被用作集群协调器。Kafka集群中的每个节点都会与ZooKeeper进行通信,以共享元数据信息、协调leader选举、检测节点故障......
  • 基于ACF,AMDF算法的语音编码matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述      语音编码是一种将连续的语音信号转换为数字数据的过程,以便在数字通信和存储应用中使用。基于ACF和AMDF的编码算法是一种经典的方法,它在语音信号处理领域得到了广泛应用。 ......
  • 【笔记】问题控制与管理&故障、问题、已知错误、变更请求之间的逻辑关系&问题管理流程
    【笔记】问题控制与管理&故障、问题、已知错误、变更请求之间的逻辑关系问题控制与管理与故障管理的尽可能快地恢复服多的目标不同,问题管理是要防止再次发生故障**例如你制作了一个报表,用户填写了问题数据进去,因此报错提示了,让用户换个数据或者和用户说不要这样填写的方法就算......
  • 编码: 隐匿在计算机软硬件背后的语言pdf电子版 Charles Petzold
    编码:隐匿在计算机软硬件背后的语言pdf电子版作者:CharlesPetzold原作名:Code:TheHiddenLanguageofComputerHardwareandSoftware出版年:2012-10-1ISBN:9787121181184链接提取码:nqn1从二进制的引入到第一个门电路的搭建,到汇编语言的由来,到操作系统,再到高级语......
  • 编码相关总结
    编码相关总结一:基础字符集:字符的集合,如ASCII是英文字符集,Unicode是最全的字符集,GB2312是汉字字符集。编码方式:字符集的字节表示方式,定义了一个字符用几个字节,用那些字节(码点)表示这个字符。关系:一个字符集至少有一种编码方式,如Unicode有utf-8和utf-16等编码方式......
  • 简述调试仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STlink)
    简述调试仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STlink)林云林栖谷隐,不知所云17 赞同1 评论72 收藏入门嵌入式编程,总会对市面上种类繁多的调试器感到困惑。本文简单介绍一下现在主流的仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STli......
  • 10月17日__new__方法学习以及__call__和__init__的关系
    目录__new__方法以老板和员工为例:老板(Boss)可以雇佣员工(实例对象)定义了雇佣员工的方式(__new__)这个方法决定是否找新的员工,如果招了新的员工,这个员工入职后需要进行初始化的安排所属部门以及工作(__init__).总结在元类里__call__和__new__和__in......
  • JDK21的虚拟线程是什么?和平台线程什么关系?
    虚拟线程(VirtualThread)是JDK而不是OS实现的轻量级线程(LightweightProcess,LWP),由JVM调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。在引入虚拟线程之前,java.lang.Thread包已经支持所谓的平台线程,也就是没有虚拟线程之前,我们一直......