字符编码的概念和发展史

一、什么是字符编码?

引入

  • 文本文件:

    ​ 文本文件是指由字符构成的文件,如我们写的python脚本文件、txt类型的文本文件等。当我们使用文本编辑器(如vs code)打开时,呈现的是一个个人类可以读懂的文字。

  • 二进制文件:

    ​ 如图片、视频等类型的文件被称为二进制文件,当我们使用文本编辑器打开时,呈现的是乱码。

    ​ 二进制文件的处理十分复杂,本文不做更多的说明!仅在文本文件范围内讨论!

虽然文件被这样分类,但实际上所有文件在计算机内部,都是由 0101011 这样的二进制位构成的,想要使用它们,还需要计算机做进一步的处理。

解码、字符编码、编码的概念

  • 解码

    ​ 当我们打开文本文件时,计算机会根据文件的类型,对文件进行一些处理。比如,将一个txt文件由二进制转换为人类可以读懂的文字,这个过程被称为解码

  • 字符编码

    ​ 而在解码过程中,计算机要依赖于一些规则,将指定的二进制位解码为指定的字符,比如:0110 0001被解码为 小写英文字母 a 。而这个规则被称为字符编码。字符编码有很多种,而前面的例子中用到的编码叫做 ASCII 编码,它是最早产生的字符编码。

  • 编码

    ​ 当然 从字符转换为二进制位 也要使用字符编码,而这个过程被称为编码

二、字符编码的发展史

阶段一:一家独大

​ 起初,美国科学家在设计字符编码的时,只考虑了使用英语的场景,发明的ASCII编码使用8个二进制位来表达一个字符,只支持现代英语和其他西欧语言,不支持汉语等语言。

  • 部分ASCII对照表:

    二进制十进制十六进制字符
    0110 00019761a
    0110 00109862b
    0110 00119963c
    0110 010010064d
    0110 010110165e
    0110 011010266f
    0110 011110367g
    0111 10111237B{
    0111 11001247C|
    0111 11011257D}

阶段二:群雄割据

为了让计算机识别中文字符,中国科学家发明了GBK字符编码,该字符编码使用16位二进制位(但有些生僻字还是不支持),且仅支持英语和汉语。

另一方面,世界上很多国家为了支持本国的语言,各自发明了字符编码,如:日本的Shift_JIS、韩国的Euc-kr等。

尽管有如此多的字符编码,但没有一个是通用的,它们大多都只支持本国语言和英语。

阶段三:天下归一

为了实现对所有语言的支持,国际组织ISO制定了unicode字符编码,也叫万国码。支持各国语言,使用16~32位二进制位来对应一个字符。

现代计算机都使用Unicode字符编码。之前的如GBK等编码可以转换为Unicode编码。

虽然unicode使得字符编码统一了,但它占用的空间也更大,浪费空间,同时影响数据,加大了速度传输量。并且,Unicode只是在内存中给出了各种字符的通用映射规则,并没有指定字符如何保存到外存(如硬盘)中。

为了解决以上问题,出现了utf系列的字符编码。UTF是针对Unicode实现的一种可变长度字符编码,比unicode更加精简,给出了字符保存的编码规则。这些编码中,最常用、应用最广的就是utf-8,使用的位数不固定,最小为8位。
至此,utf-8编码成了最流行的字符编码,我们在开发中也应该尽量使用utf-8编码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花_城

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值