`
qwex9iao
  • 浏览: 173867 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对编码概念的通俗理解

阅读更多
1。初出茅庐
首先说明计算机开始只有美国人在用。
因为8位的字节可以组合出 256种不同的状态 (也就是2的8次方)

为什么用8位 这跟硬件有关(不知道是哪个牛人 决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节")

所以计算机 说白了 就是处理字节的机器。

2。建造巴比伦塔
2.1  ascii

美国人想用这些状态表达更多的信息,所以就决定把这些状态分别规定特殊的用途 所以一直编到了 第127号。
这时候计算机就可以用不同的字节来存储英语或字符了
这时这种方案 的名字就叫做 ANSI 的"Ascii"编码(American Standard Code for Information Interchange,美国信息互换标准代码)

2.2 "DBCS"(Double Byte Charecter Set 双字节字符集)

2.2.1 GB2312  

不久之后。。。。。世界各地开始使用计算机,他们的语言不是英文,怎么表示呢?
因为美国人之编到了第127位。所以他们决定把127位之后的空位表示新的字母,符号。。。一直搞到最后一个状态255

历史终于转到我们中国了 ,我们中国人开始使用计算机, 这时候还哪有字节状态来表示汉字?而且汉子几千上万怎么保存?
我们中国人智慧超群,怎么可能难得倒
我们把127号之后的乱七八糟字符直接PASS掉 规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字(前面的一个字节(称之为高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE)

这样就组合了7000多简体汉字,就连以前在ASCII有的数字,标点,字母也重新编了 两个字节的编码 这就是 全角(127号以下的那些就叫"半角"字符)
这种方案 就是最初的 GB2312   (也就是说是对ASCII 的中文扩展)

2.2.2 GB2312 的扩展 GBK 和GB18030

由于汉字太多 ,GB2312  感觉不够用 所以又做了一个扩展 :不再要求低字节也是127号之后
这种方案 就是GBK 了  这时候可以有26000多的汉字了

少数民族要用电脑怎么办? 于是继续扩展 加了几千个新的少数民族的字  GBK 扩成了 GB18030

2.2.3 "DBCS"

中国的程序员把这些编码通称为 "DBCS"(Double Byte Charecter Set 双字节字符集)
在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了


3. 统一乱世。
3.1 iso 的 UCS, 俗称 "UNICODE"

这时候乱了,每个国家都搞一套编码。。(那不是乱码满天飞)。。怎么办呢。。。
一个叫ISO (国际标谁化组织)的国际组织出现,统一乱世。
废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它"Universal Multiple-Octet Coded Character Set",简称 UCS, 俗称 "UNICODE"。 世界和平了。。。。

UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些“半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于"半角"英文符号只需要用到低8位,所以其高8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。

在中国“一个汉字,两个英文字符”的时代过去了。。。
从这时开始,WINDOWS 系统 把所有的核心代码都改成了用 UNICODE 方式工作的版本 所以无需加装各种本土语言系统就可以显示全世界上所有文化的字符了。

3.2 ucs 的方案

UNICODE 是用两个字节来表示为一个字符,他总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。如果还不够也没有关系,ISO已经准备了UCS-4方案,说简单了就是四个字节来表示一个字符,这样我们就可以组合出21亿个不同的字符出来(最高位有其他用途),这大概可以用到银河联邦成立那一天吧!

3.3 UNICODE 的传输

现在就只剩下传输问题了。。。
于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到UTF时并不是直接的对应,而是要过一些算法和规则来转换。

关于UTF-8编码与GB2312编码的冲突也有个很有意思的事:就是联通之所以拼不过移动的原因。
为什么在记事本上写 联通 会是乱码 看一下他们之间的转换规则就可以知道了。。
1
0
分享到:
评论

相关推荐

    Java基础笔记.md

    适合Java初学者的学习笔记,涵盖了从软件安装,环境配置,到编码学习的基本内容,十分的详细。讲解了java的基础知识,适合初学者和小白使用。...通俗易懂,易于理解的大纲。希望对大家有帮助!!!

    2024年软件测试必考50个面试题及答案

    通过通俗易懂的语言,本文介绍了软件测试的基础知识、高级概念以及实战技巧,旨在帮助面试者更好地准备软件测试相关的职位面试。 适用人群: 本篇文章主要面向软件测试初学者,特别是那些即将参加面试的求职者。它为...

    从零开始:零基础者如何快速掌握数据可视化技能?.zip

    通过通俗易懂的语言,本文介绍了数据可视化的基本概念、实战技巧、工具推荐、最佳实践以及面试中可能遇到的问题和应对策略。旨在帮助零基础的面试者更好地准备数据可视化相关的职位面试,提高面试技巧和自信心。 ...

    39道MySQL高频面试题解析,让你面试少走九十%的弯路

    它的目标是帮助求职者理解并掌握这些概念,从而在面试中更好地展示自己的技术能力和问题解决能力。 其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了准备理论知识...

    Python面试题及答案35个 Python 程序员面试必备问题与答案

    它的目标是帮助求职者理解并掌握这些概念,从而在面试中更好地展示自己的技术能力和问题解决能力。 其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了准备理论...

    2024年switch函数面试题常考题.zip

    它的目标是帮助求职者理解并掌握这些概念,从而在面试中更好地展示自己的技术能力和问题解决能力。 其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了准备理论知识...

    2024年C++ vector容器详解-面试常考.zip

    这篇博客为C++初学者提供了一个全面的vector容器理解指南,以通俗易懂的语言介绍了vector的基本操作、特性、注意事项以及面试中可能遇到的问题和实战演练。本博客旨在帮助求职者更好地准备涉及C++ vector容器的职位...

    面试必备:WebGoat实战通关指南!一(General、Injection)

    它的目标是帮助求职者理解并掌握这些概念,从而在面试中更好地展示自己的技术能力和问题解决能力。 其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了准备理论知识...

    2024年SQL基础语句,看这里!一天搞定90%常用语句

    它的目标是帮助求职者理解并掌握这些概念,从而在面试中更好地展示自己的技术能力和问题解决能力。 其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了准备理论知识...

    2024年20道经典Redis面试常考.zip

    博客采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,博客还强调了准备理论知识、实际案例和编码实践的重要性,鼓励求职者在面试中展示自己的实际操作能力和项目经验。此外,博客还提供了心态...

    2024年Python爬虫面试题常考题万字长文.zip

    其他说明: 文章采用通俗易懂、口语化的语言风格,旨在让读者轻松理解并吸收内容。同时,文章还强调了准备理论知识、实际案例和编码实践的重要性,鼓励求职者在面试中展示自己的实际操作能力和项目经验。此外,文章...

    通信原理MATLAB仿真教程

    《通信原理MATLAB仿真教程》系统地介绍了通信原理MATLAB仿真的基本思想与方法,重点讨论了MATLAB对常见信号与线性系统、模拟调制、模拟信号的数字传输、数字信号的基带传输、数字信号的频带传输、信道容量和编码以及...

    VC++数字图像处理与工程应用

    如在景物理解和计算机视觉(机器视觉)方面,图像处理已由二维处理发展到三维理解或解释。近几年来,随着计算机和各个相关领域研究的迅速发展,科学计算可视化、多媒体技术等研究和应用的兴起,数字图像处理从一个专门...

    Java虚拟机规范中文版

    为此目标,我们在专有技术名词、偏僻词中用括号保留了原文、专门在多处读者理解起来可能有困难的地方,添加了“译者注”加以解释。  囿于我们的水平和写作时间,书中难免存在不妥之处,大家如有任何意见或建议都...

    Introduction to Machine Learning with Applications in Informatio

    这本书通俗易懂,不证明定理,也不详述数学理论。我们的目标是在直观的层次上呈现主题,并有足够的细节来阐明底层的概念。这本书深入地涵盖了核心的经典机器学习主题,包括隐藏马尔可夫模型(HMM),支持向量机(SVM)和...

    智能写作v2.0.docx

    通俗一点的理解,可以将它看作是文字版的冒险或RPG游戏。 非线性叙事由于是涉及到文学作品的生成、创作,计算机、人工智能改变了以往的叙事逻辑,我们可以技术的帮助下,进行非线性的叙事创作。 计算美学...

    算法导论(part1)

    此外,为了便于大家理解书中对算法的分析,对于其中所需的数学知识,我们给出了详细的解释。如果对某一主题已经有所了解,会发现根据书中各章的编排顺序,可以跳过一些介绍性的小节,直接阅读更高级的内容。 本书是...

    算法导论(part2)

    此外,为了便于大家理解书中对算法的分析,对于其中所需的数学知识,我们给出了详细的解释。如果对某一主题已经有所了解,会发现根据书中各章的编排顺序,可以跳过一些介绍性的小节,直接阅读更高级的内容。 本书是...

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

    计算机应用技术(实用手册)

    如果没有安装IDE设备,我们可以选择NONE参数,这样可以加快系统的启动速度,在一些特殊操作中,我们也可以通过这样来屏蔽系统对某些硬盘的自动检查。 图中2部分是DRIVE A和DRIVE B软驱设置,如果没有A或B驱动器,...

Global site tag (gtag.js) - Google Analytics