前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文打通计算机字符编码

一文打通计算机字符编码

原创
作者头像
一个风轻云淡
发布于 2023-09-24 12:53:06
发布于 2023-09-24 12:53:06
2970
举报
文章被收录于专栏:java学习javajava学习java

有关编码的基础知识

1. 位 bit 最小的单元

字节 byte 机器语言的单位 1byte=8bits 1KB=1024byte 1MB=1024KB 1GB=1024MB

2.进制

二进制 binary 八进制 octal 十进制 decimal 十六进制 hex

3.字符

字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。

字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。

字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节 表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码, 以便计算机能 够识别和存储各种文字

常见字符编码的介绍

首先来看一下常用的编码有哪些,截图自 Notepad++。其中 ANSI 在中国大陆即为 GBK(以前是 GB2312),最常用的是 GBK 和 UTF8 无 BOM 编码格式。后面三个都是有 BOM 头的文本格 式,UCS-2 即为人们常说的 Unicode 编码,又分为大端、小端。

  • 1、大端模式(Big endian):将高序字节存储在起始地址(按照从低地址到高地址的顺序存放数据的高位字节到低位字节)
  • 2、小端模式(Little endian):将低序字节存储在起始地址(按照从低地址到高地址的顺序存放据的低位字节到高位字节) 在计算机领域中,大小端序是跟硬件的体系结构有关的。

​编辑

所谓 BOM 头(Byte Order Mark)就是文本文件中开始的几个并不表示任何字符的字节,用二 进制编辑器(如 bz.exe)就能看到了。

UTF8 的 BOM 头为 0xEF 0xBB 0xBF Unicode 大端模式为 0xFE 0xFF Unicode 小端模式为 0xFF 0xFE

ASCII 码

计算机一开始发明的时候是用来解决数字计算的问题,后来人们发现,计算机还可以做更多的 事,例如文本处理。但由于计算机只识“数”,因此人们必须告诉计算机哪个数字来代表哪个 特定字符,例如 65 代表字母‘A’,66 代表字母‘B’,以此类推。但是计算机之间字符-数字 的对应关系必须得一致,否则就会造成同一段数字在不同计算机上显示出来的字符不一样。因此美国国家标准协会 ANSI 制定了一个标准,规定了常用字符的集合以及每个字符对应的编号, 这就是 ASCII 字符集(Character Set),也称 ASCII 码。

那时候的字符编解码系统非常简单,就是简单的查表过程。例如将字符序列编码为二进制流写 入存储设备,只需要在 ASCII 字符集中依次找到字符对应的字节,然后直接将该字节写入存储 设备即可。解码二进制流的过程也是类似。

其中:

 0~31 及 127(共 33 个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换 行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)

 32~126(共 95 个)是字符(32 是空格),其中 48~57 为 0 到 9 十个阿拉伯数字。

 65~90 为 26 个大写英文字母,97~122 号为 26 个小写英文字母,其余为一些标点符号、 运算符号等。

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

OEM 字符集的衍生

当计算机开始发展起来的时候,人们逐渐发现,ASCII 字符集里那可怜的 128 个字符已经不能 再满足他们的需求了。人们就在想,一个字节能够表示的数字(编号)有 256 个,而 ASCII 字 符只用到了 0x00~0x7F,也就是占用了前 128 个,后面 128 个数字不用白不用,因此很多人打 起了后面这 128 个数字的主意。可是问题在于,很多人同时有这样的想法,但是大家对于0x80-0xFF 这后面的 128 个数字分别对应什么样的字符,却有各自的想法。这就导致了当时销 往世界各地的机器上出现了大量各式各样的 OEM 字符集。

大家对于 0x00~0x7F 这个范围的解释基本是相同的,而对于后半部分 0x80~0xFF 的解释却不一 定相同。甚至有时候同样的字符在不同 OEM 字符集中对应的字节也是不同的。

不同的 OEM 字符集导致人们无法跨机器交流各种文档。例如职员甲发了一封简历 résumés 给 职员乙,结果职员乙看到的却是 r?sum?s,因为é字符在职员甲机器上的 OEM 字符集中对应的 字节是 0x82,而在职员乙的机器上,由于使用的 OEM 字符集不同,对 0x82 字节解码后得到 的字符却是?。

多字节字符集(MBCS)和中文字符集

上面我们提到的字符集都是基于单字节编码,也就是说,一个字节翻译成一个字符。这对于拉 丁语系国家来说可能没有什么问题,因为他们通过扩展第8个比特,就可以得到256个字符了,足够用了。但是对于亚洲国家来说,256 个字符是远远不够用的。因此这些国家的人为了用上 电脑,又要保持和 ASCII 字符集的兼容,就发明了多字节编码方式,相应的字符集就称为多字 节字符集(Muilti-Bytes Charecter Set)。例如中国使用的就是双字节字符集编码。

例如目前最常用的中文字符集 GB2312,涵盖了所有简体字符以及一部分其他字符;GBK(K 代 表扩展的意思)则在 GB2312 的基础上加入了对繁体字符等其他非简体字符。这两个字符集的 字符都是使用 1-2 个字节来表示。Windows 系统采用 936 代码页来实现对 GBK 字符集的编解码。 在解析字节流的时候,如果遇到字节的最高位是 0 的话,那么就使用 936 代码页中的第 1 张码 表进行解码,这就和单字节字符集的编解码方式一致了。如果遇到字节的最高位是 1 的话,那么就表示需要两个字节值才能对应一个字符。

假如你使用 GB2312 写了这么一句话: 我叫 ABC 它的二进制编码是这样的: 11001110 11010010 10111101 11010000 01000001 01000002 01000003

全角

全角是一种电脑字符,且每个全角字符占用两个标准字符(或半角字符)位置。通常的英文字 母、数字键、符号键都是半角的,半角的显示内码都是一个字节。为了排列整齐,英文和其它 拉丁文的字符和标点也提供了全角格式。在中文输入法中,切换全角和半角格式的快捷键SHIFT+空格。

ANSI 标准、国家标准、ISO 标准

不同 ASCII 衍生字符集的出现,让文档交流变得非常困难,因此各种组织都陆续进行了标准化 流程。例如美国 ANSI 组织制定了 ANSI 标准字符编码(注意,我们现在通常说到 ANSI 编码,通常指的是平台的默认编码,例如英文操作系统中是 ISO-8859-1,中文系统是 GBK),ISO 组织 制定的各种 ISO 标准字符编码,还有各国也会制定一些国家标准字符集,例如中国的 GBK,GB2312 和 GB18030。

操作系统在发布的时候,通常会往机器里预装这些标准的字符集还有平台专用的字符集,这样只要你的文档是使用标准字符集编写的,通用性就比较高了。例如你用 GB2312 字符集编写的 文档,在中国大陆内的任何机器上都能正确显示。同时,我们也可以在一台机器上阅读多个国 家不同语言的文档了,前提是本机必须安装该文档使用的字符集。

Unicode 的出现

虽然通过使用不同字符集,我们可以在一台机器上查阅不同语言的文档,但是我们仍然无法解决一个问题:如果一份文档中含有不同国家的不同语言的字符,那么无法在一份文档中显示 所有字符。为了解决这个问题,我们需要一个全人类达成共识的巨大的字符集,这就是 Unicode字符集。 Unicode 字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字 符码(Code Point)。Unicode 字符集将所有字符按照使用上的频繁度划分为 17 个层面(Plane), 每个层面上有 2 16=65536 个字符码空间。

其中第 0 个层面 BMP,基本涵盖了当今世界用到的所有字符。其他的层面要么是用来表示一 些远古时期的文字,要么是留作扩展。我们平常用到的 Unicode 字符,一般都是位于 BMP 层 面上的。目前 Unicode 字符集中尚有大量字符空间未使用。

编码系统的变化

在 Unicode 出现之前,所有的字符集都是和具体编码方案绑定在一起的(即字符集≈编码方式), 都是直接将字符和最终字节流绑定死了,例如 ASCII 编码系统规定使用 7 比特来编码 ASCII 字 符集;GB2312 以及 GBK 字符集,限定了使用最多 2 个字节来编码所有字符,并且规定了字节 序。这样的编码系统通常用简单的查表,也就是通过代码页就可以直接将字符映射为存储设备 上的字节流了。例如下面这个例子:

Unicode 同样也不完美,这里就有三个问题,一个是,我们已经知道,英文字母只用一个字节 表示就够了,第二个问题是如何才能区别 Unicode 和 ASCII?计算机怎么知道两个字节表示一 个符号,而不是分别表示两个符号呢?第三个,如果和 GBK 等双字节编码方式一样,用最高位是 1 或 0 表示两个字节和一个字节,就少了很多值无法用于表示字符,不够表示所有字符。

Unicode 在很长一段时间内无法推广,直到互联网的出现,为解决 Unicode 如何在网络上传输 的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8 就是 每次 8 个位传输数据,而 UTF-16 就是每次 16 个位。UTF-8 就是在互联网上使用最广的一种

Unicode 的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上 所有文化的字符了。 UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用 1~4 个字节表示一个符号。 从 unicode 到 uft-8 并不是直接的对应,而是要过一些算法和规则来转换(即 Uncidoe 字符集 ≠UTF-8 编码方式)

因此,Unicode 只是定义了一个庞大的、全球通用的字符集,并为每个字符规定了唯一确定的 编号,具体存储成什么样的字节流,取决于字符编码方案。推荐的 Unicode 编码是 UTF-16 和UTF-8。

早期字符编码、字符集和代码页等概念都是表达同一个意思。例如 GB2312 字符集、GB2312编码,936 代码页,实际上说的是同个东西。但是对于 Unicode 则不同,Unicode 字符集只是定义了字符的集合和唯一编号,Unicode 编码, 则是对 UTF-8、UCS-2/UTF-16 等具体编码方案的统称而已,并不是具体的编码方案。所以当需 要用到字符编码的时候,你可以写 gb2312,codepage936,utf-8,utf-16,但请不要写 Unicode。造成乱码的原因就是因为使用了错误的字符编码去解码字节流,因此当我们在思考任何跟文本 显示有关的问题时,请时刻保持清醒:当前使用的字符编码是什么。只有这样,我们才能正确 分析和处理乱码问题。

常见 CharSet 有:GBK、GB2312、US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16

​​我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
独家丨数字生态大会专有云干货分享
2021年度腾讯数字生态大会已落下帷幕,专有云产品中心研发总监、专家工程师秦国安,在分布式云会场给大家分享了《腾讯专有云 客户专属的分布式云》,让我们回顾一下分享干货吧!
腾讯专有云
2022/06/24
5.8K0
独家丨数字生态大会专有云干货分享
无门槛,一键交付企业级容器平台:3节点、3步骤、3小时
腾讯专有云PaaS平台Tencent TCS(Tencent Cloud-native Suite)为企业云原生转型提供一站式解决方案,涵盖容器、微服务、消息中间件以及数据库等核心能力,适用于云原生PaaS平台、容器与微服务平台、边缘计算等关键场景。
腾讯专有云
2025/06/15
1270
无门槛,一键交付企业级容器平台:3节点、3步骤、3小时
SaaS遇上私有化部署,如何实现高效、快捷交付?
近年来,SaaS 伴随着公有云的落地而逐渐兴起并稳步前进。随着 SaaS 产品的发展完善,市场催生出一种新的需求——能否将 SaaS 产品进行私有化部署?表面上 SaaS 专为网络交付而设计,与私有化部署似乎格格不入,然而,从市场状况来看,SaaS 产品的私有化部署却具备长期存在的价值。 SaaS 遇上私有化部署,挑战重重 调查数据显示,未来几年内,中国的私有云市场会保持 22% 的年增速,最终和公有云市场形成一个相对稳定的市场平衡。对于私有云用户来说,SaaS 产品的私有化部署能够满足其个性化定制的需求
腾讯SaaS加速器
2022/02/17
4.5K0
腾讯云遨驰宣布升级,推出私有化云原生交付利器TCS
伴随着私有云和混合云的蓬勃发展,各类应用和服务的私有化交付需求也持续增长。如何快速、高效地实现私有化交付,成为云厂商和SaaS厂商的一大难题。
腾讯专有云
2022/06/24
1.4K0
腾讯云遨驰宣布升级,推出私有化云原生交付利器TCS
云原生基础设施TCS技术总结与回顾
01 TCS 是云原生时代的基础设施 TCS(Tencent Cloud-native Suite)即腾讯专有云敏捷版 PaaS 平台,提供云原生平台与腾讯自研 PaaS 产品(如 Credis、TDSQL、TSF )等。同时,TCS 也是腾讯公有云、腾讯专有云TCE以及腾讯 SaaS 产品的通用底座,为腾讯各个云产品在各个场景的输出和交付提供统一的底座。 TCS 云原生基础设施是 TCS/TCE 解决方案中的基础设施与容器平台层,为腾讯的各种云产品私有化输出提供向上屏蔽底层 IaaS 差异的云原生计算、
腾讯专有云
2023/02/17
7.7K0
云原生基础设施TCS技术总结与回顾
To B业务成为腾讯收入的重要支柱,连续五季收入占比超30%
刚刚,腾讯发布2022年Q2财报 二季度,实现营收1340亿元 金融科技及企业服务业务实现营收422亿元 其中,To B业务成为腾讯收入的重要支柱 连续五季收入占比超30% Q2,我们减少亏损订单,并降低成本 营收结构优化,毛利率持续改善 进入高质量发展阶段 未来,我们将跑得更“稳” 深入各行各业,为客户创造价值 本季度,腾讯宣布自研业务全面上云 上云规模突破5000万核 累计节省成本超30亿 “自研上云”全面锤炼了腾讯云 这些领先技术正持续开发给外部客户 更好服务伙伴生态 自研技术获权威认可! 腾讯持
腾讯专有云
2022/08/26
8720
To B业务成为腾讯收入的重要支柱,连续五季收入占比超30%
腾讯云TCS:面向应用的一站式PaaS 平台
12月19日和20日,由腾讯发起的面向全球开发者和技术爱好者的年度盛会-Techo Park 开发者大会在北京举办。
腾讯专有云
2022/06/24
8.8K0
腾讯云TCS:面向应用的一站式PaaS 平台
腾讯云:公有云如何「专有化」
机器之心原创 作者:旗舰 经过几天的通宵奋战,孙其琛和他的团队刚刚完成了一家大型金融机构的专有云部署项目。迎着第一缕阳光走出机房的他们,倒头便睡在了会议室的沙发上。 熬夜加班后在会议室补觉的景象,在互联网公司十分常见,但在金融和政府客户的工作氛围中,这样的场景显得反差感很大。 「金融行业比较传统,员工日常都是西装革履,上下班也是朝九晚五。整体跟我们的工作模式差别挺大的。」习惯了短裤 + 文化衫的孙其琛是个典型的 IT 男,但是作为腾讯云的专有云中心技术总监,近几年他一直在与「高大上」的政府、金融行业领导
机器之心
2023/03/29
8.2K0
腾讯云:公有云如何「专有化」
TStor统一存储与你同行
从公有云迈向混合云存储模式 “ 全球正加速迈进数字经济时代,企业也从最初的IT上云向业务全面云化方向发展。云计算厂商只有充分发挥IaaS、PaaS、SaaS等各方面能力,才能全面满足企业数字化升级的需求。云计算发展迅速,形态复杂多样,包括公有云、私有云、混合云、边缘云等等。根据中国信息通信研究院数据显示,中国公有云和私有云市场规模持续加速增长。 ” 腾讯云在公有云上的表现有目共睹,国际权威调研机构IDC最新发布的《IDC Quarterly Public Cloud Service Tracker,2
云存储
2022/07/18
7320
TStor统一存储与你同行
加速深度用云!腾讯专有云多项目获评“2023年度可信云最佳实践”
7月25日,在2023可信云大会上,中国信息通信研究院(下称“信通院”)正式发布2023年度可信云最佳实践结果,腾讯云凭借领先的技术和丰富的实战经验,共计4个项目入选最佳实践。
腾讯专有云
2023/08/03
5210
加速深度用云!腾讯专有云多项目获评“2023年度可信云最佳实践”
腾讯云遨驰能力升级!分布式云操作系统全面助力企业数字化转型
随着数字化转型的深入,各行各业更加需要高效灵活、安全可靠的算力。 11月30日,2022腾讯全球数字生态大会遨驰技术专场召开。会上,腾讯云公布了分布式云操作系统遨驰的最新升级和落地实践,为企业用云提供详实参考。 数实融合,布局未来:绿色、高效、安全可控的云 腾讯云计算产品总经理李力介绍,腾讯分布式云操作系统遨驰在算力、覆盖、安全等方面实现了全新升级,构建起无处不在、触手可及的算力。 在算力方面,遨驰可实现 GPU 算力更优分配和0改造适配的异构硬件迁移。基于银杉智能网卡提供的高达5000万 PPS
腾讯专有云
2022/12/02
9080
腾讯云遨驰能力升级!分布式云操作系统全面助力企业数字化转型
腾讯云副总裁沙开波:坚定自研,打造公私同源的云服务
5月16日,在腾讯全球数字生态大会广州峰会上,腾讯云副总裁沙开波表示,腾讯云坚定自研战略,坚持公私同源的技术路线,为客户提供行业领先的性能和稳定性。谈及融合创新,沙开波表示,腾讯云将聚焦软件层能力,在硬件支持上保持开放,不会绑定任何单一的硬件,积极推进软硬件深度适配。
腾讯专有云
2025/05/21
1410
腾讯云副总裁沙开波:坚定自研,打造公私同源的云服务
对,我们就是腾讯Q3财报里那朵云
11月16日,腾讯发布2022年三季度财报,实现营收1401亿元,其中金融科技及企业服务实现营收448亿元。ToB业务成为第一大收入来源,持续担当增长引擎。 划重点⬇️ 腾讯专有云企业版亮相财报,持续助力企业数字化转型。财报指出:“腾讯专有云企业版支持客户在其私有云上集成和部署我们的公有云产品,满足了倾向将数据部署在私有云的银行与政务行业等客户在安全与合规方面的需求。” 腾讯专有云,全链路自主可控的私有云 腾讯专有云TCE(Tencent Cloud Enterprise)是腾讯云基于公有云实践沉淀自研
腾讯专有云
2022/11/18
1.8K0
对,我们就是腾讯Q3财报里那朵云
接连获奖!腾讯云分布式云彰显行业领先地位
12月23-24日,在北京举办的2021首届混合云大会现场上,“树根互联根云平台基于腾讯云 CDC 专属云方案”斩获年度混合云架构创新类优秀案例。这代表腾讯云的分布式云服务能力再获国家权威认可,充分印证了腾讯云在分布式云领域的领导优势。 今年以来,分布式云成为了云计算领域关注的焦点,以腾讯云为代表的云厂商积极布局分布式云生态。今年11月,腾讯云首次正式对外公布分布式云战略,同时发布行业首家全域治理的云原生操作系统遨驰 Orca。其中,腾讯分布式云是为多云、混合云场景提供系列产品能力的总称,旨在为用户在
腾讯云计算产品团队
2022/01/04
2K0
腾讯云核心伙伴高层沟通会-专有云专场
4月13日,腾讯云核心伙伴高层沟通会在腾讯滨海大厦顺利召开。其中专有云专场,和到场的核心伙伴就合作模式、双方收益等共赢方式,围绕信创、小型化、云原生三大主题进行深入探讨和交流。 渠道是大势所趋 生态共建是产业发展的唯一选择,伙伴建设是大势所趋。腾讯坚持做好“数字化助手”,结合生态伙伴的能力,为客户提供最优的产品、服务。过去几年间,腾讯从数字技术供给、解决方案打造、企业成长三个维度,逐步构建起产业互联网的开放生态。目前,已经与近万多家合作伙伴共建,形成几百项联合解决方案。 专有云已经做好了准备 经过近三四年
腾讯专有云
2023/04/28
1.5K0
腾讯云核心伙伴高层沟通会-专有云专场
首批!腾讯专有云TCE和TCS通过信通院容灾认证
近日,腾讯专有云TCE和TCS 首批通过了中国信息通信研究院(以下简称信通院)《专有云容灾技术能力要求》,从基础设施能力、架构容灾能力、平台容灾能力三大类13子项88细项100%满足监管机构对专有云容灾的技术能力要求。TCE和TCS的容灾能力达到业界领先水平。
腾讯专有云
2024/05/22
1K0
首批!腾讯专有云TCE和TCS通过信通院容灾认证
政务信息化项目中腾讯云与私有云的选择与应用
在政务信息化项目中,选择云计算平台是一个复杂但至关重要的过程,涉及到技术、安全、成本等多个方面的考量。以下是对政务信息化项目中云计算平台的选择与应用的详细分析:
Towserliu
2024/08/03
3520
政务信息化项目中腾讯云与私有云的选择与应用
升级为私有全栈云的腾讯云TStack究竟强在了哪儿?
在刚刚结束的美国丹佛Open Infrastructure峰会上,腾讯云对全新升级为私有全栈云的TStack进行了详细的介绍,引起峰会现场众多OpenStack专业人士注目。那么,这款腾讯基于OpenStack倾力打造的私有云解决方案,究竟有何过人之处?升级为私有全栈云的TStack究竟强在了什么地方?带着这些疑问,老孙对腾讯云TStack产品总监邬沛君、腾讯云TStack首席架构师贺阮博士就这些问题跟大家聊聊。
腾讯技术工程官方号
2019/05/20
1.7K0
升级为私有全栈云的腾讯云TStack究竟强在了哪儿?
角力分布式云,腾讯云最强牌面成色如何?
未来十年,计算需求已无处不在,云计算需要保证一致性体验和安全性的前提下,快速响应各种需求和灵活定制。所以,业界经历公有云、私有云、混合云之后,愈发在市场方向上形成共识:分布式云。
大数据在线
2021/11/25
5850
角力分布式云,腾讯云最强牌面成色如何?
首批!腾讯云TCS通过云原生中间件管理能力评估
2023年1月9日,中国信息通信研究院主办的云原生产业联盟年会在北京召开,会上发布了一系列云原生领域评估结果。腾讯云计算(北京)有限责任公司的云原生PaaS平台 专有云TCS首批通过“云原生中间件管理能力“先进级评估,彰显TCS在云原生中间件方面的实力。 随着高速运转高频竞争时代的来临,新场景新需求不断涌现,业务类型持续丰富,中间件作为系统软件与应用软件之间的桥梁,在业务构建过程中起着至关重要的作用。云原生化转型的大趋势下,中间件自身需要顺应云原生环境的特点对产品进行迭代优化,同时云原生平台也需要提供完善
腾讯专有云
2023/01/18
2.1K0
首批!腾讯云TCS通过云原生中间件管理能力评估
推荐阅读
相关推荐
独家丨数字生态大会专有云干货分享
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档