编码

电脑是由电路板组成,电路板里面集成了无数的电阻和电容,交流电经过电容的时候,电压比较低记为低电平,用0表示,交流电流过电阻的时候,电压比较高,记为高电平,用1来表示;所以每一个0和1在计算机中被称为位,也就是bit位。然而,如果使用一个位来表示计算机中的最小存储单元,那么这个存储单元只能存储0或1,存储范围太小,所以规定用9个bit位为一组来表示计算机的最小存储单元。

计算机底层只能存储0和1,但是计算机是如何存储诸如英文、符号字符,汉字等内容的呢?

因为语言和字形的不同,每个人都可以约定自己的一套(这就叫编码)而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示 。

常见的编码表

ASCII

世界上虽然有各种各样的字符,但是计算机发明之初只考虑了美国的需求,大概只需要128个字符就能全部表示出来。128个字符用7个位刚好可以表示,计算机存储的最小单位是byte,即8为,ASCII码中最高位设置为0,用剩下的7位表示字符。

数字32到126表示的这些字符都是可打印字符,0到31和127表示一些不可以打印的字符,这些字符一般用于控制目的。

ISO-8859-1

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。此字符集支持部分于欧洲使用的语言。

windows-1252

ISO-8859-1用于西欧国家,但其没有欧元€这个符号,因为欧元比较晚。实际使用中更为广泛的是windows-1252编码。

这个编码中加入了欧元符号以及一些其他常用的字符。在很多应用程序中,即使文件声明采用 ISO-8859-1编码,解析是依然采用windows-1252编码。

GB2312

美国和西欧字符只用一个字节就够了,但是中文显然是不够的。中文第一个标准时GB2312,GB2312标准主要针对的是简体中文常见字符,包括约7000个汉字。GB2312固定使用两个字节表示汉字,在这两个字节中,最高位都是1,如果是0,就认为是ASCII字符。

GBK

GBK建立在GB2312的基础上,向下兼容GB2312。GBK增加了一万四千多个汉字,共计约21000汉字,其中包括繁体字。

汉字是用两个字节表示的,在解析二进制流的时候,如果第一个字节的最高位是1,那么就将下一个字节读进来一起解析为一个汉字,而不用考虑它的最高位。解析完后,跳到第三个字节继续解析。

GB18030

GB18030主要有以下特点:

  1. 采用变长多字节编码,每个字可以由1个、2个或4个字节组成。

  2. 编码空间庞大,最多可定义161万个字符。

  3. 完全支持Unicode,无需动用造字区即可支持中国国内少数民族文字、中日韩和繁体汉字以及emoji等字符。

Big5

Big5针对繁体中文,广泛用于台湾香港。包括一万三千多个繁体字,和GB2312类似,一个字符同样固定使用两个字节表示。和GB系列不兼容。

Unicode

世界上还有很多国家的字符,每个国家的各种计算机厂商都对自己常用的字符进行编码,在编码的时候基本忽略了其他国家的字符和编码,这样造成的结果就是,出现了太多的乱码,且互相不兼容。

世界上所有的字符能不能统一编码呢?可以,这就是Unicode。

Unicode做了一件事,就是给世界上所有字符都分配了唯一的数字编号,这个编号范围从0x000000到0x10FFFF,即65536个数字之内。每个字符都有一个Unicode编号,这个编号一般携程16进制,在前面加U+。大部分中文的编号方位在U+4E00到U+9FA5。

Unicode给所有字符分配了唯一数字编号,但是并没有规定编号如何对应到二进制表示。

UTF-32(或 UCS-4)

UTF-32 (或 UCS-4)是一种将Unicode字符编码的协定,对每一个Unicode码位使用恰好32位元。其它的Unicode transformation formats则使用不定长度编码。因为UTF-32对每个字符都使用4字节,就空间而言,是非常没有效率的。特别地,非基本多文种平面的字符在大部分文件中通常很罕见,以致于它们通常被认为不存在占用空间大小的讨论,使得UTF-32通常会是其它编码的二到四倍。虽然每一个码位使用固定长定的字节看似方便,它并不如其它Unicode编码使用得广泛。

UTF-16

UTF-16是Unicode字符编码五层次模型的第三层:字符编码表(Character Encoding Form,也称为 “storage format”)的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。

UTF-8

UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部份修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。

计算机编程语言的代码——编码相关推荐

  1. Java:计算机编程语言Java的简介、安装(编程环境/工具)、学习路线(如何学习Java以及几十项代码编程案例分析)之详细攻略

    Java:计算机编程语言Java的简介.安装(编程环境/工具).学习路线(如何学习Java以及几十项代码编程案例分析)之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编 ...

  2. 【转帖】计算机编程语言

    计算机编程语言 https://www.cnblogs.com/Kevin-Yang/p/11221332.html 最近博客园的文章 周天还没时间仔细看. 等工作日时仔细看一下. 用于表达数字计算机 ...

  3. 计算机编程语言(1)

    计算机编程语言(1) 分类: 计算机语言 2009-11-22 13:58 1399人阅读 评论(0) 收藏 举报 Go语言 摘要: Go语言是谷歌2009发布的第二款开源编程语言.Go语言专门针对多 ...

  4. 计算机编程语言历史_早期编程语言的历史

    计算机编程语言历史 From Babbage to Babel and Beyond is an article written by Linda Weiser Friedman. This text ...

  5. 这可能是最全的计算机编程语言列表了

    计算机编程语言可用于将指令传达给计算机.它们基于某些句法和语义规则,定义了编程语言中每种结构的含义.海风教育退费 海风教育在线辅导0元一对一试听课等你来领取,领取课程方法: 1.私信留下您的手机号和姓 ...

  6. 这可能是史上最全的计算机编程语言列表了

    计算机编程语言可用于将指令传达给计算机.它们基于某些句法和语义规则,定义了编程语言中每种结构的含义. 计算机编程语言可用于将指令传达给计算机.它们基于某些句法和语义规则,定义了编程语言中每种结构的含义 ...

  7. 最早接触到的计算机编程语言——c语言

    最早接触到的计算机编程语言--C语言 在经过入学后计算机导论的熏陶后,在大一的下半学期我终于接触到了一门语言,这也是我们最早接触的计算机编程语言--c语言. 在初学的时候,感觉这门课程十分晦涩,但是当 ...

  8. 计算机编程语言python-2018年计算机编程语言排名: Python语言排名第一

    今天,IEEE Spectrum发布了第五版计算机编程语言交互排名第一: Python成功捍卫了它的头衔,C ++崭露头角,排名第二,而C和Java则"分别"跌至第三和第四. 两者 ...

  9. 计算机编程语言python-PYTHON之计算机语言基础知识 —— 编程语言的分类

    一.计算机语言分类 低级语言.高级语言.专用语言.脚本语言 1.低级语言:机器语言.汇编语言和符号语言.机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令(机器码)的合集,他是计算机的设 ...

  10. Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略

    Java:计算机编程语言Java的简介.编程环境/工具.如何学习Java之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编程Java语言→定义Java类→Java虚拟机 ...

最新文章

  1. 一起学asp.net基础文章二 服务器控件、客户端控件和html表单控件
  2. ABAP Netweaver和Hybris Enterprise Commerce Platform的登录认证
  3. 项目托管到Github
  4. c语言3级菜单_大一新生作品:利用 C 语言实现quot;通讯录管理系统quot;,直言太简单...
  5. python日记----2017.8.1
  6. 机器视觉技术在表面缺陷检测方面的发展趋势
  7. gif android 点击 加载,android 加载显示gif图片的解决方案
  8. python静默打印pdf_前端静默打印实现 html pdf集合
  9. VS2017新建HTML项目,VS2017创建项目模板和项模板(方便实用)
  10. python集合全排列_python——全排列数的生成方式
  11. JDK8新特性(九)之Stream流的find()、max()、min()、reduce()方法
  12. curl返回常见错误码
  13. 安装scrapy报错问题解决
  14. 信息学奥赛一本通1220
  15. Leetcode+牛客网—回文串总结(一)
  16. 深度剖析MyBatis 的执行流程(3)--映射器
  17. matlab失明的小猫,从小失明的小猫,手术后第一次见到猫妈妈,场面让人泪崩!...
  18. 1.IEC 62056-21 E模式通信
  19. 斗战神服务器正在维护6,斗战神3月16日维护更新内容及修改BUG
  20. 【学点Linux】Linux该如何学习(新手入门必看)

热门文章

  1. 汽车软件开发流程及代码提交
  2. 火山PC_POST教程
  3. 七种滤波方法测试matlab
  4. OHEM算法论文理解
  5. 测试抑郁症软件,‎App Store 上的“抑郁症测试 - 心理测试”
  6. 语文学科html代码,[2018年最新整理]学科分类与代码.doc
  7. 什么是JBPM工作流
  8. 看《Java就业培训教程》--孙孝祥著有读书笔记
  9. VBA编程教程(基础二)
  10. ubuntu常用命令(未整理)