神奇的字符编码

今天白月黑羽和大家说说字符编码

文字是怎么放到电脑里的呢?

我们眼睛看到的电脑上显示的字,包括汉字、英文、日文、韩文,这些文字,在计算机内部是怎么存储的?

难道是刻上去的? 比如刻在硬盘上一个个这样的字?

当然不是,计算机都是用数字存储信息的。

用 磁场、电信号 等物理介质的 正负 状态 表示 0 和 1,如果一个数字只由0和1 表示,就是一个2进制的数字表示法。

用连续的0和1,就可以代表很大的数字。

比如

二进制 的 10 就表示十进制 的 2

二进制 的 110 就表示十进制 的 6

从右向左,每位 上的 1 分别代表 2的0次方(就是1), 2的1次方(就是2),2的2次方(就是4),2的3次方(就是8) 等等, 依次类推。

根据不同的使用场合,数字可以表示不同的意义。

比如,需要存储 颜色 信息的时候, 0 可以用来代表 白色, 1 代表红色, 2 代表 黑色等等。

如果有10000种颜色,可以用 0 到 9999 一共 10000个数字分别代表他们。

同样的, 我们要存储 文字 信息,也可以用不同的数字来代表不同的文字。

字符集

计算机是美国人发明的,所以在开始的时候, 他们也没有想到将来要支持全世界的文字。

所以,最早的时候,他们定义了一个规范,定义一些数字 用来代表美国人使用的文字符号。

而美国人的单词都是用字母拼出来的, 所以他们常用的基础文字符号比较少。

就是字母,再加上 !@#$%^&*(){[]}+- 等等这些符号,也就100多个。

他们定义的规范就叫 ASCII (American Standard Code for Information Interchange) ,中文大意就是 美国信息交换标准码

大家可以参考 百度上面的ASCII表

这个 ASCII 码里面用128个数字代表了128个字符。

要存储和传输这 128个字符对应的文字信息 也很简单, 二进制有 8 位就足够了。

因为2的8次方等于256,可以存储 从 0 到255 一共 256个数字, 可以表示 最多 256 个文字符号。

二进制有 8 位 的长度 被称为 一个 字节 。

所以一个字节就可以存放 任何一个ASCII 文字符号。

ASCII 这样的 用数字代表文字符号的规范,就被称之为 字符集

后来计算机传遍了全世界,其它国家的文字符号就多了。

我们中文,就有这么多的文字符号。小学的时候,我们有个3000常用字表(我骄傲一下,小学1年级我就认识了近2000多个字), 光常用字就有3千个。

当然还有 韩文、日文、繁体中文、阿拉伯文等等。

显然ASCII是不够的,我们需要其它的数字来代表这些文字符号。

开始各个国家和地区 自己定义了自己的 字符集。

比如我们中国就定义另外一套规范, 规定了 用什么样的数字代表什么样的文字符号。

这套规范也在不断的升级,包括 GB2312、GBK、GB18030

各个国家定义了各国的文字的字符集,这就带来了一个问题。

现在全球交流很密切,有时一篇文章会使用多国文字,比如 同时使用 日文和中文。 而没有各国的字符集是不包含别国文字的, 这时就没法在一篇文章中存储多国文字了。

为了解决这个问题。 国际标准化组织定义了一个字符集,想包括世界上所有的文字符号。

这就是大名鼎鼎的 unicode 字符集。

这个字符集里面包括了现今世界上的常用文字符号 和 其对应的数字表示。

这样就解决了在一篇文章中包含多国文字的问题了。

字符编码

unicode 出现了,很好,但是还有一个问题。 字符怎么存储和传输。

最初只有ASCII码的时候,一个字节(最多可以表示256个字符)就可以存储传输任何文字。

所以软件硬件对 每个字符都是用字节(8位二进制数字)来进行存储、传输的。 没有什么问题。

但是unicode里面有10多万的文字符号,数字范围 远远 超过 一个字节所能代表的数字。

所以一个字节不够。

那么怎么用多个字节来 表示这些数字呢?

这就有需要另外的规范。这些 如何用字节表示 字符对应的数字 就是 字符编码 规范

unicode字符 的编码,最常用的规范是 UTF8 和 UTF16 。

比如 UTF8 表示 中文字符 你 ,就是用 3个字节表示的,对应的16进制表示是 E4 、BD、 A0

当然我们中文字符集gb系列使用另外的编码规范。

以后,我们会写一篇文章,以UTF8为例,讲解它是如何用多个字节存储 数字的。

这里我们只要知道 不同的 编码规范 对数字有不同的 用字节表示的方法就行了。

有了编码规范,字符集 中的数字就可以进行存储和传输了

 

了解更多内容,请百度白月黑羽,或移步白月黑羽的官方网站

转载于:https://www.cnblogs.com/allenblogs/p/10275681.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值