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编码的冲突也有个很有意思的事:就是联通之所以拼不过移动的原因。
为什么在记事本上写 联通 会是乱码 看一下他们之间的转换规则就可以知道了。。
分享到:
相关推荐
这个全面的课件集为学习者提供了一个逐步深入信息论与编码的平台,无论是对信息安全专业学生,还是对此领域有兴趣的自学者,都能从中受益匪浅。通过这些内容的学习,可以更好地理解数据压缩、通信系统的稳健性,以及...
如果函数极度复杂,无法通过传统数学方法求解,我们可以使用二进制编码来表示x的值。例如,为了保留10位小数,我们可以用一个34位的二进制数来表示x,这样能覆盖0到1之间的10^10个可能的值。 接下来,遗传算法的...
此外,通过提及“通俗数学名著译丛”项目的建立,我们可以了解到中国出版社在推动国内数学普及与传播工作方面的努力,以及国际数学联盟对提高公众对数学认知的重视。 综上所述,这些内容共同揭示了数学不仅仅是抽象...
《编码——隐匿在计算机背后的软硬件语言》是一本深入浅出介绍计算机基础知识的书籍,非常适合初学者。...这本书用通俗的语言解释了复杂的概念,使得计算机科学的入门门槛降低,适合所有对这个领域感兴趣的人。
总的来说,《编码》是一本全面介绍计算机科学的书籍,它不仅适合初学者,也对有经验的IT从业者提供了宝贵的回顾和深入理解。通过阅读本书,读者可以更好地理解计算机系统的全貌,从而在编程、系统设计和故障排查等...
2. 运输连接与会话不是同一概念,服务器在持久连接下才能向客户端发送消息。 可靠性和重传机制: 1. 如果使用可靠传输协议(如TCP),消息只需发送一次。 2. 使用不可靠传输时(如UDP),如果未收到确认(ACK),...
本示例将帮助您理解WCF的基本概念、配置以及如何创建一个简单的服务端和客户端。 在WCF中,服务是提供特定功能的实体,而客户端则是调用这些服务的程序。"WCFTestModel"标签可能指的是此示例中使用的模型类,用于...
本教程将带你了解JSP的基本概念、语法以及如何通过一个简单的例子来实践。 一、JSP的原理 JSP的本质是一个Servlet,当浏览器请求一个JSP页面时,服务器会将JSP转换为Servlet源码,然后编译成.class文件执行。JSP...
### 二十三种设计模式通俗理解 #### 1. FACTORY (工厂模式) 工厂模式是一种常用的软件设计模式,它的核心思想在于将实例化的责任交给一个专门的类——工厂类。这样做的好处是用户无需了解创建对象的具体过程,只...
这本书不仅仅讲述了编程语言的基础,更是将计算机内部运作的逻辑以通俗易懂的方式呈现出来,对于理解和掌握计算机科学的核心概念有着极大的帮助。 首先,我们要理解“编码”的概念。在计算机领域,编码是将人类可读...
总结来说,这份“史上最通俗易懂的C++优秀PPT课件”涵盖了计算机基础、C++语言核心、Visual C++开发环境的介绍,以及程序开发的基本流程和常见错误处理,是学习C++的宝贵资源。对于初学者,通过这份课件可以逐步理解...
《通俗易懂的数字语音处理》是一份专为初学者设计的教程课件,它深入浅出地介绍了数字语音处理的基础理论。...无论你是电子工程的学生,还是对AI感兴趣的开发者,这份资料都将是你深入理解数字语音处理世界的敲门砖。
### 通俗讲解单片机IO口的输出模式 在单片机系统设计中,IO口(General Purpose Input/Output,通用输入输出端口)扮演着极其重要的角色,它们是单片机与外界交互的主要途径之一。本文将详细介绍单片机IO口的输出...
4. **类与对象**:理解面向对象编程(OOP)的核心概念,如类(Class)的定义、对象(Object)的创建、封装、继承和多态等。类是对象的模板,而对象是类的实例。 5. **异常处理**:学习如何使用try-catch-finally...
编写C程序时,应注意良好的编码习惯,如合理命名变量、使用注释解释代码、保持代码结构清晰等,这有助于提高代码的可读性和维护性。 ##### 1.11 C语言的字符集 C语言支持ASCII字符集,其中包含了英文大小写字母、...
本学习资料旨在帮助初学者深入理解3G的基本概念、工作原理以及相关应用,通过通俗易懂的方式让复杂的技术变得易于理解。 3G的基础知识主要包括以下几个方面: 1. **技术标准**:3G主要遵循IMT-2000国际电信联盟...
作者通过通俗易懂的语言,揭示了计算机软硬件之间的交互机制,帮助读者理解编程语言、数据存储、指令执行等核心概念。 本书首先介绍了计算机的基本构成,包括CPU(中央处理器)、内存、硬盘等关键部件,讲解了它们...