首页 > 其他分享 >【计算机】字符编码的发展与关系

【计算机】字符编码的发展与关系

时间:2024-01-31 11:24:06浏览次数:33  
标签:编码 UTF 字节 字符 ASCII 编码方案 计算机

【计算机】字符编码的发展与关系

编码方案与字符集

字符编码说到底就是一种将字符存储在计算机中的方式,如通常会将字符与一个二进制串对应,从而映射到字节流中。而表示字符与二进制串对应关系的表叫做字符集,而具体将对应的二进制串映射到字节流中的方法则叫编码方案。

所以说编码方案和字符集不是同一种东西,两者配合才构成一个完整的字符编码。通常一个系列的编码考虑兼容性都会使用同一个字符集,但一个字符集可能有多个编码方案,这些编码方案之间可能兼容也可能不兼容。

所以,虽然看起来下文较多的讲述编码方案,但要知道每种编码都有隐含的字符集在内,一般编码名即使是字符集的名称。

ASCII(美国信息交换标准代码)

ASCII发布于1967年,是相当早期的编码标准,并一直沿用至今,奠定了后续编码标准的基础。

其采用一个字节对应一个字符的形式,但也因此只能存储字母数字等西文字符,不能满足全球化的需求。

ANSI码(美国国家标准学会码)

由于ASCII不能满足全球化的需求,所以之后各国都开始以ASCII为基础定制自己本国的编码格式,如GB2312(一种中文编码),Shift_JIS(一种日文编码)等。

这些编码都有同一特性:和ASCII兼容,但互相之间不兼容。所以使用这些编码同时只能显示一种地区支持的语言。

这类的编码格式种类繁杂,因此一个叫ASNI的组织站了出来,定制了一个叫“代码页”的标准,其统计了这类编码格式,给每个格式都分配了专属的代码页编号,也因此这类编码又被称做ANSI编码。

所以说ANSI码并不是指一个特定的文本编码,而是指代一群有相同特征的编码。

GB系列编码

GB是“国标”的拼音首字母,是中国地区的ANSI码,其一共有三代:“GB2312”、“GBK”、“GB18030”,三者都是按顺序发展出来。

GB2312

GB2312是最早的中文编码标准,每个字占两个字节,与ASCII兼容,一共收录了6763个汉字以及682个特殊符号,已经包含了所有生活中的常用汉字了。

GBK

GB2312只有6000多个汉字,肯定是无法满足所有汉字的数量需求的,因此GBK得以出现,在与GB2312兼容的基础上,将汉字数量扩充到了20902个,符号数达到了984个,并且包含了对繁体字的支持。

GB18030

即使GBK的字符数高达两万多,但依旧是不够中国地区使用的,在与GBK兼容的基础上,这次直接将每字符两字节改为了四字节,还增加了很多少数民族所用的文字。

Unicode(万国码)

ANSI码只是让各国有了自己的字符编码,但依旧没有满足全球化的需求,现在急需一款能在全球通用的字符编码,于是Unicode编码得以出现。

最开始的时候有多个组织都在试图制定全球通用的编码标准,比如一个是ISO定制的UCS,还有一个是统一码联盟指定的“Unicode”。当然,1991年前后,人们很开就意识到世界不需要两个通用编码标准,所以两者开始合并成果并协同后续工作,于是现代的Unicode得以诞生。

UCS-4与UTF-32

这两个编码方案都是4字节的定长存储,但这太浪费空间了所以很少使用。其他地方两者基本一样,UTF-32的提出主要是为了ISO和统一码联盟两者字符集互相兼容而产生的。

UCS-2与UTF-16

UCS-2是很早期的Unicode编码方案,采用2字节的定长方式存储字符,很显然现在它已经被淘汰了,因为2字节根本无法满足存储全球文字的需求。

所以UTF-16诞生了,它是UCS-2的升级版,所以与之兼容,同时将定长存储改为了变长存储,需要时会将字符空间扩展到4字节。

因为最低两字节,所以UTF-16有字节序的问题,因此会在文本开头带上额外的DOM(字节序标记),用于标识大端模式(BE)还是小端模式(LE),在Windows环境下通常会将UTF-16 LE直接叫做“Unicode”。

UTF-8

UTF-8是较新的编码方案同时也是最流行的编码方案,它采用变长存储,与ASCII兼容,最低时一个字符只需1字节,直接化身ASCII码,所以在多语言文本环境(如HTML文件)中能很大的节省空间,同时扩展性也很强。

UTF-8 BOM

因为UTF-8是最低单字节的变长编码,所以实际上它是不需要BOM的,而且这不符合Unix使用习惯,因为Unix在设计上不建议这种看不见的文本内容;加BOM是微软的习惯,用于区分ASCII和UTF-8。所以虽然有这种编码方式,但因为兼容性的原因并不推荐。

参考资料

标签:编码,UTF,字节,字符,ASCII,编码方案,计算机
From: https://www.cnblogs.com/BDFFZI/p/17998824

相关文章

  • FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错
    场景Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132474126Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl......
  • 【转帖】UTF-8编码发展历史
    https://www.jianshu.com/p/ea91ff32a3c0 1.美国人首先对英文字符编成ASCII码,用一个字节中的低7位表示英文128个字符,高1位统一为02.欧洲人字母上存在注音符,128位不够用,即采用高1位,最多可表示256位3.不同国家字符编码不一致,虽然0--127表示的符号是一样的,但是128--255的......
  • jmeter 接口测试响应unicode编码为中文显示
    添加一个后置处理器beanshellpostprocessor, public StringresUnicoding(StringresMsg){   String[]asciis=resMsg.split("\\\\u");   StringnativeValue=asciis[0];   try   {      for(inti=1;i<asciis.length;i++......
  • 计算机网络之网络协议和体系结构(一)
    1.网络协议的三要素什么是协议?为了保证通信正常进行,必须事先做一些规定,而且通信双方要正确执行这些规定,例如,使用哪种基带编码方式,差错编码和交换技术等。同时,只有双方在这些规定上达成一致,彼此才能能够互相“理解”,从而确保通信的正常进行。这种通信双方必须遵守的规则和约定成为协......
  • 《深入理解计算机系统(原书第3版)》PDF
    内容简介本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/......
  • 《深入理解计算机系统(原书第3版)》PDF
    内容简介本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统......
  • http encode 编码
    uses System.NetEncodingvars:string:=TNetEncoding.URL.Encode('123');//123vars2:string:=TNetEncoding.URL.Encode('abcd');//abcdvars3:string:=TNetEncoding.URL.Encode('ab1cd2');//ab1cd2vars4:string:=TNetEn......
  • 计算机网络
    如同任何一次伟大陆行一样,丈量的次度就是一沓坚实的脚印,2002年公司成立于面试官您好,我是黄河科技学院软件工程专业大4学生赵英波。1969interent互联网元年1946计算机元年网络分类局域网(LAN):指范围内在几百米到10公里内办公楼群或校园网内的计算机相互交互构成的计算机网络。成域......
  • [HAOI2016] 找相同字符
    容斥原理将两个字符串拼接起来(中间用‘#’分隔开),再减去它们内部的贡献height数组支持的最长公共前缀:不仅是长度,也是子串的个数返回值开longlong核心代码与[AHOI2013]差异一致点击查看代码#include<bits/stdc++.h>usingnamespacestd;intsa[500005];intrk[20][5......
  • 151. 反转字符串中的单词(中)
    目录题目法一、双指针法二、字符串常用操作题目给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会......