当前位置:首页 > 科技  > 软件

两位巨佬吃了一顿晚饭,整个互联网彻底被改变了!

来源: 责编: 时间:2024-07-17 16:54:26 491观看
导读1992年9月, 一个周三的下午,贝尔实验室。 Rob Pike (Go语言发明人之一) 正在操作系统Plan 9 上忙碌,这是继Unix之后的一个大工程, 马上就要完工了, 这个时候他突然接到了一个电话。 电话是IBM的人打来的,他们正在奥斯汀参

1992年9月, 一个周三的下午,贝尔实验室。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob Pike (Go语言发明人之一) 正在操作系统Plan 9 上忙碌,这是继Unix之后的一个大工程, 马上就要完工了,  这个时候他突然接到了一个电话。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

(年轻帅气的Rob Pike)pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

电话是IBM的人打来的,他们正在奥斯汀参加X/Open 委员会会议, 想请Rob Pike 和 Ken Thomson (Unix发明人) 对他们设计的一个Unicode编码进行评审。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob Pike知道X/Open委员会主要负责制定Unix上的标准规范,以便提高应用程序的在不同Unix变体上的移植性。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

很明显,这一次会议的主题是:编码!pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob Pike想到了自己正在忙活的操作系统Plan 9 , 为了支持全世界的语言如英文、中文、韩文、日文、阿拉伯文...... Plan 9 当然要用Unicode 。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

(这货怎么和Go的吉祥物长得如此之像?)pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

大家都知道Unicode只是规定了每个字符用什么编码,但是没有规定如何去存储, 当时Plan 9 采用了一个叫做ISO 10646 UTF编码, 但是这个编码实在不怎么样, 按照Rob Pike的话说:我们恨这个编码。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob 和 Ken 立刻意识到:机会来了 !pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob :我们有丰富的经验, 为什么不设计一个真正好用的Unicode存储标准呢? pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Ken :同意, 我们设计出来,把标准推广的事情交给X/Open委员会。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

俩人向IBM的人表达了这个想法, 得到了支持,条件是: 一定要快,快速设计、快速实现。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

因为下周一就要投票表决了!pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

对于天才程序员来说,快速、高质量把活儿搞定就是小菜一碟。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Ken :还记得《老婆离家三周,我开发了一个操作系统吗?》pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

他们俩慢悠悠地去餐厅吃饭,在吃饭期间,Ken 和 Rob就把基本的方案给设计出来了,这就是大名鼎鼎的UTF-8。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

回到贝尔实验室,他们就把想法写成了提纲,发给了X/Open 委员会的人, 委员会的回复是: pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

这比我们设计的版本好多了,你们什么时候能实现它? pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob 和Ken 拍着胸脯说:放心吧,下周一肯定能有一个完整的、可以运行的实现。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

当天晚上(周三),他们俩就卷起袖子干活, Ken 把packing和unpacking的代码搞定, Rob则去折腾C和图形库相关的东西。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

周四,所有的代码都已完成,开始将Plan 9操作系统上的文本文件转成UTF-8 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

周五,Plan 9 操作系统就已经运行在UTF-8上面了。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

实际花费不到三天!pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

这三天的工作成果最终统治了整个互联网的编码标准, 统计显示, 现在96.8%的Web网站在使用UTF-8。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

图片图片pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

故事讲完了,我们来看看为什么UTF-8能流行起来。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

前面说过Unicode只是一个字符集,它规定了每个字符的二进制代码,例如“码” , 对应的Unicode 是7801 , 二进制是pgx28资讯网——每日最新资讯28at.com

111 1000 0000 0001pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

需要两个字节来保存, 如果表示其他更大范围的字符,可能需要3个字节或者4个字节,甚至更多。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

当计算机面对这两个字节的字节流的时候,就会出现严重的问题:计算机怎么知道这两个字节表示的是一个字符?还是两个字符?pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

大家知道英文字母用一个字节保存就够了,如果Unicode规定每个英文字符也用两个字节或三个字节来保存,那每个英文字母前面势必要补上0, 文本文件要大两到三倍。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

这是巨大的浪费,肯定不行。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

Rob和Ken的设计的UTF-8就比较聪明, 看看这个表:pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

图片图片pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

把Unicode 转换成UTF-8,非常简单,比如汉字“码” , Unicode 是7801 , 二进制是 111 1000 0000 0001pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

7801对应上图的第三行,只要把二进制从右向左填到对应的“模板”中就行,不够的补零pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

图片图片pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

更多的细节就不展开了,关键要看看UTF-8有什么好处。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

1. 兼容ASCII, 表格中的第一行就是为ASCII所设。 

pgx28资讯网——每日最新资讯28at.com

多字节编码的每个字节的最高位永远是 1,而 ASCII 字符编码的最高位是 0,所以从根本上杜绝了编码冲突。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

2. 第一个字节就指明了后续的长度

pgx28资讯网——每日最新资讯28at.com

当程序面对一个字节流的时候,只需要读出第一个字节最前面有几个1 ,就知道这个字符的长度,解码很方便。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

图片图片pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

3. 前缀码

pgx28资讯网——每日最新资讯28at.com

大家仔细观察下, UTF-8中没有任何合法字符是其他字符的前缀, 这样就带来了一个好处:支持程序快速地跳过有问题的字节,然后正常解码。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

假设有两个中文 “码” 和 “农”, 对应的UTF-8编码为E7A081(码) and E5869C(农)。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

但是网络传输丢失了一些数据,变成了 E781 E5869C   (即“码”的A0丢失了)pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

现在程序先读到了E7, 二进制是 1110 0111,它就知道这个字符应该是3字节的, 并且后面的两个字节都应该以10 开头。 pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

于是它就要再读两个字节, 因为A0这个字节丢失了, 程序读到了81 和 E5。 pgx28资讯网——每日最新资讯28at.com

程序就发现: pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

81 (二进制10000001) 是符合规范的pgx28资讯网——每日最新资讯28at.com

E5(二进制11100101)的开始两个bit不是10啊, 这应该是另外一个字符的开始。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

所以程序就判断出有字符丢失了,可以丢弃刚读到的E7 81 , 然后从E5开始读取, E5 86 9C ,最终显示“农”字。pgx28资讯网——每日最新资讯28at.com

pgx28资讯网——每日最新资讯28at.com

是不是很巧妙?pgx28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-101379-0.html两位巨佬吃了一顿晚饭,整个互联网彻底被改变了!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Trip.com QUIC 高可用及性能提升

下一篇: 基于Netty的自研流系统缓存实现挑战: 内存碎片与OOM困境

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 使用LLM插件从命令行访问Llama 2

    使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • 三分钟白话RocketMQ系列—— 如何发送消息

    三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 破圈是B站头上的紧箍咒

    破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 小米MIX Fold 3配置细节曝光:搭载领先版骁龙8 Gen2+罕见5倍长焦

    小米MIX Fold 3配置细节曝光:搭载领先版骁龙8 Gen2+罕见5倍长焦

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 电博会与软博会实现

    电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top