从ASCII聊起

原创 2017年09月04日 15:17:39

在互联网的世界,端与端之间传递的报文都是未经过编码的字节流,每8位组成1个字节,计算机以二进制为基础,这是由于使用晶体管的开合状态表示1和0,这样8个电晶体管就可以组成一个字节,这正是应用层使用的最小单位——字节。

在通过Socket进行网络通信的程序中,假如我们在接收到报文时不知道通过什么编码才能正确解码,最好的办法就是用Socket读取字节流,在确认编码后再对这些字节流进行转码,否则产生解码错误。我们常见的编码有ASCII、GB2312、UNICODE、UTF-8等等,除此之外还有很多其他编码,为什么会有这么多不同的编码?

ASCII编码即American Standard Code for Information Interchange,作为美国标准信息交换编码,并且计算机刚开始只在美国流行,所以当时所有的计算机都使用ASCII编码,ASCII编码是由8比特组成,从0到127分别用于表示不同的字符,包括各种符号、英语字母、阿拉伯数字等,由于128种字符只需7位即可完成编码,所以最高位被0填充。这128个字符已经完全满足使用英语的美国人,英语单词可以通过拆分成字母后用ASCII码表示。

后来随着计算机的迅速发展,其他国家相继引入计算机,他们发现这些编码根本不够对他们本国文字编码,ASCII码一共8位,最多也只能表示256个字符,于是他们对最高位做文章,其中0-127已经被美国使用并成为标准,为了兼容考虑肯定不能改动,剩下128-255可供使用,但很快剩下的128个编码又被用完,现在唯一能做的就是使用两个甚至更多个字节来表示一个字符,每个国家都有自己的规定,于是中国编制了GB2312编码,为了兼容ASCII,它规定一个字节如果小于等于127则表示ASCII,如果两个大于127的字节连在一起则表示汉字,而且两个字节的值都在一定的范围内。经过一轮扩展后已经基本解决汉字编码不足问题。

再后来很多国家都按自己规定给自己的文字编码,对其他国家的编码一概不认识,情况一度混乱。接着国际标准化组织推出UNICODE编码,它要把全世界所有文字符号都包括进来,使用两个字节16位对所有字符进行编码,同时为了保证兼容ASCII码,低七位仍用于表示ASCII码原来的字符。通过UNICODE确实是把世界所有字符都统一起来了。

UNICODE编码虽然统一了所有字符,但还存在一个问题,如果是英文字符其实用一个字节已经足够,但使用UNICODE却必须要搭上另外一个毫无意义的字节,在网络传输过程中则意味着要多传输一倍无用的报文。于是引入UTF-8编码,它属于UNICODE的一种实现,它是一种变长的编码方式,在UTF-8规定的实现下可以用一个字节表示ASCII码表示的所有字符,避免了多余的空间浪费。

除了上面几种常见的编码,还有很多其他编码,不同编码指定的规则也不同,但基本都对ASCII做了兼容处理,可以说ASCII是最基础的。

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

统计分析:模型评估和模型选择

机器学习算法 原理、实现与实战——模型评估与模型选择原文地址:http://www.cnblogs.com/ronny/p/4062792.html1. 训练误差与测试误差机器学习的目的是使学习到的模...

机器学习算法 原理、实现与实战——模型评估与模型选择

1. 训练误差与测试误差 机器学习的目的是使学习到的模型不仅对已知数据而且对未知数据都能有很好的预测能力。 假设学习到的模型是Y=f^(X)Y=f^(X),训练误差是模型Y=f^(X)Y=...

从太原马拉松未中签聊起

前言 突然发现我好久没更新CSDN博客上的文章了,说来有些惭愧。最近一段时间,我除了工作日在公司上班,业余时间都留给了跑步。思来想去,我还是从最近发生在我身上的一件“大事”说去吧!   将时间定...

从京东的故事聊起

第一次听说京东还是在大学的时候,那时候我想网购个手机,大家也知道在淘宝上买东西有时候还得拼RP,大学那时候没啥闲钱也就很少去网购,就向一个网购经验比较丰富的同学问问,才知道有京东这个名字。从那以后,渐...

小议技术领域的精分化——从《找你妹》背后的游戏云聊起

Let‘s Find It 是海外版找你妹,本文浅谈Let's Find It 的技术架构,而这款游戏则是“游戏云”的试点Demo,专为游戏开发爱好者开发的后台的自动运维SAAS 同时,也讨论了中国各...

今天第一次系统返回的数据里面有笑脸,探测笑脸ASCII 01

今天好开心啊,第一次系统返回的数据里面有笑脸,所以顺便探测了一下笑脸☺ASCII 01。 实(搞)验(怪)用的源码,如下

字符编码笔记:ASCII,Unicode和UTF-8

转载自:阮一峰  原文链接:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Uni...

字符编码笔记:ASCII,Unicode和UTF-8

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8...

ASCII、Unicode、GBK和UTF-8字符编码的区别联系

ASCII、Unicode、GBK和UTF-8字符编码的区别联系 转载的上面的地址很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是...

ASCII、Unicode和UTF-8编码的区别

总体归纳如图所示: 相关解释为:        最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)