编码的发展史:

  1. 一开始计算机只在美国使用。8位的字节可以组合出256种不同的状态。他们将0到32种状态规定为”控制码“,后来又用其中32号以后的状态表示空格、标点符号、数字和大小写字母。这样一直编到了127号状态。这样计算机就可以用不同字节来存储英文的文字了。这种指定某个状态为某个动作或者符号的过程称为编码。而以上的方案的编码称为ASNI的ASCII编码(ASCII: American Standard Code for Information Interchange, 美国信息互换标准代码)。当时世界上所有的计算机都是用同样的ASCII方案来保存英文字。
  2. 后来欧洲各地都开始使用计算机,但是很多国家是英用的不文。于是各国人民决定用127号之后的空位来表示新的字母、符号。ASCII从127个扩展到255个。至此,8位的字节所有状态都用了,没有新的状态可以用了。
  3. 等到中国人们得到计算机,已经没有可以利用的字节状态来表示汉字了。更何况中国有6000多个常用汉字需要编码。这个难不倒中国人。我们不客气的将127号之后的奇葩符号直接取消掉,并且规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起是,就表示一个汉字,前面一个字节(即高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE,这样就可以组合出大约7000多个简体汉字了。其中,还包括数学符号、罗马希腊字母、日本的假名,在ASCII里本来就有的数字、标点、字母都重新编了两个字节长的编码。两个字节长的字符常称为”全角“字符, 而原来127号以下的字符常称为”半角“字符。这种ASCII的汉字扩展方案叫做”GB2313“
  4. 后来中国人还是觉得不够,于是就干脆不要要求低字节一定是要大于127的内码。而规定只要高字节大于127,低字节可以取尽0-255. 结果又增加了近20000个新的汉字和符号。而这种编码方案称为”GBK“,它包含了”GB2312“的所有内容。后来少数民族也用电脑了,于是我们再扩展,GBK扩成了GB18030.
  5. 中国自己扩展了ASCII,其他国家也自己扩展了ASCII。结果是相互之间谁也不懂谁的编码,谁也不支持谁的编码。这样一旦中国要显示印度的文字,就是一片乱码。而且还有那些一时用不上电脑的穷苦人民,他们的文字怎么办?
  6. 百乱之中, ISO(国际标准化组织)着手解决这个问题。他们的方法:废了所有的地区性编码方案,重新搞一个包括地球上所有文化、所有字母和符合的编码。它叫”UNversal Multiple-Octet Coded Character Set“, 俗称”UNICODE“。Unicode开始制订时,计算机的存储器容量已经极大的发展了,空间再也不成问题。于是ISO就直接规定必须用两个字节(16位)来统一表示所有字符。对于ASCII里的前127个字符,Unicode保持其编码不变,只是在其前面加8个零,扩展为16位。而其他文化的语言字符则全部重新统一编码。
  7. Unicode到来了,那么Unicode如何在网络上传输就变成了一个必须解决的问题。于是面向传输的众多标准出现了。其中一种叫做utf-8, 8是指每次传输8位数据。Unicode到utf-8的转变的规则,下面来介绍。

Unicode向utf-8转换的规则:

Unicode utf-8
0000 - 007F 0xxx xxxx  
0080 - 07FF 110x xxxx 10xx xxxx
0800 - FFFF 1110 xxxx 10xx xxxx 10xx xxxx

如上表举例,”汉“字的Unicode编码是6c49,在800-FFFF之间,写成二进制的话是:0110 1100 0100 1001.  将这16位二进制从左到右依次填入1110 xxxx 10xx xxxx 10xx xxxx 的x中, 得到: 1110-0110 10-11 0001 10-00 1001, 即E6 B1 89.

转载于:https://www.cnblogs.com/haoshine/p/5076901.html

编码 Unicode utf-8相关推荐

  1. 字符编码 unicode 及其在javascript 中的使用

    一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(Byte),计算机内存最小寻址单位就是 1 字节. 早期为了在计 ...

  2. 编码 unicode 及其在 javascript 中的使用

    编码 unicode 及其在 javascript 中的使用 一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(B ...

  3. 编码Unicode与解码

      1.编码(Unicode)     unicode(统一码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,以 ...

  4. 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    GBK,ISO-8859-1,GB2312的本质区别 编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标 ...

  5. python中unicode编码表_Python中的字符串操作和编码Unicode详解

    本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧. 字符串类型 str:Unicode字符串.采用''或者r''构造的字符 ...

  6. mac 文本编辑器 文本编码Unicode utf-8 不适用的问题

    在mac上使用默认的文本编辑器打开下载的xx.txt文件,如果文本是gbk的编码可能会出现 文本编码Unicode utf-8 不适用的打开错误,如下图 解决方式: 文本编辑---偏好设置-----打 ...

  7. 引用 字库编码Unicode相关知识

    引用 weifeng.shen 的 字库编码Unicode相关知识 1.      各地编码 首先说明一下现在常用的一些编码方案: 1.         在中国,大陆最常用的就是GBK18030编码, ...

  8. html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程

    html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...

  9. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  10. Unity中获取字符串长度、Unicode字符数量和编码ASCII,UTF,GBK的区别

    1.String.Length,String.ToCharArray,StringInfo,Encoding.UTF8.GetByteCount的区别: String.Length:获取的是字符串中C ...

最新文章

  1. Python 判断类型
  2. Shiro内置的FilterChain
  3. js打乱数组的顺序_如何用 js 实现一个类似微信红包的随机算法
  4. 数据库文档生成工具V1.0
  5. listView当中有嵌套了有onClickListener的控件时ListView自身的onItemClick无响应的解决方案...
  6. php 的点代表什么意思,linux .(点)是什么意思
  7. Android开发中listView的item无法获取焦点
  8. 真的存在网络钓鱼吗?网络钓鱼技术之HTML走私分析
  9. 软件评测师教程书本对软考的作用有多大?
  10. dcs系统中数据服务器的冗余,如何提升DCS系统的可靠性?这篇文章讲透了
  11. 互联网产品经理的工作职责
  12. H5+CSS 实现前面带搜索图标的搜索框
  13. java 的vm是什么_java – 什么是VM,为什么动态语言需要一个?
  14. npm rebuild记录
  15. 实习生、应届生、三方协议、实习协议、劳动合同的区别
  16. dd命令 刻录U盘启动
  17. openstack 自己制作云桌面linux瘦客户机
  18. 【数据工具】高德地图POI数据下载工具(支持选择省市以及POI类型)
  19. 说说淘宝和中小卖家的未来
  20. 中国护士总量严重不足 “滴滴打针”会是水中捞月吗?

热门文章

  1. 游戏编程设计模式——Game Loop
  2. springboot dubbo 问题记录
  3. 开发Windows Mobile和Wince(Windows Embedded CE)的部署项目(Deploy Project)时,如何修改注册表...
  4. JS如何设置获取盒模型对应的宽高
  5. [Luogu 3258] JLOI2014 松鼠的新家
  6. IDEA overwrite报错、languagelevel设置不生效问题
  7. X509证书认证流程介绍
  8. centos7下安全访问远程服务器
  9. ElasticStack系列之八 _source 字段
  10. Python第四章__装饰器、迭代器