编码的发展史:

  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.

编码 Unicode utf-8的更多相关文章

  1. 字符集和编码——Unicode(UTF&UCS)深度历险

    计算机网络诞生后,大家慢慢地发现一个问题:一个字节放不下一个字符了!因为需要交流,本地化的文字需要能够被支持. 最初的字符集使用7bit来存储字符,因为那时只需要存下一些英文字母和符号.后来虽然扩展到 ...

  2. 各个系统和语言对Unicode的支持 字符集和编码——Unicode(UTF&UCS)深度历险

    http://www.cnblogs.com/Johness/p/3322445.html 各个系统和语言对Unicode的支持: Windows NT从底层支持Unicode(不幸的是,Window ...

  3. UNICODE UTF编码方式解析

    先明确几个概念 基础概念部分 1.字符编码方式CEF(Character Encoding Form) 对符号进行编码,便于处理与显示 常用的编码方式有 GB2312(汉字国标码 2字节) ASCII ...

  4. 各种编码中汉字所占字节数;中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030

    vim settings set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936,latin1set termencoding=utf-8se ...

  5. 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030

    中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 cp936是微软自己发布的用在文件系统中的编码方式.而bg2312是中国国家标准.我明白mount -t vfa ...

  6. Unicode(UTF&UCS)深度历险

    Unicode(UTF&UCS)深度历险 计算机网络诞生后,大家慢慢地发现一个问题:一个字节放不下一个字符了!因为需要交流,本地化的文字需要能够被支持. 最初的字符集使用7bit来存储字符,因 ...

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

    来自:http://blog.csdn.net/lvxiangan/article/details/8151670 ------------------------------------------ ...

  8. 各种编码UNICODE、UTF-8、ASCII学习笔记

    本文转自csdn博客:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html ,感谢作者的分享 作者: 阮一峰 日期:  ...

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

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

  10. 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030

    中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 内容详见: http://www.360doc.com/content/11/1004/12/6139921_1 ...

随机推荐

  1. 【c++】类管理指针成员

    c++编程提倡使用标准库,一个原因是标准库大胆减少对指针的使用.但是许多程序是离不开指针的.包含指针的类需要特别注意复制控制,原因是复制指针时只复制指针中的地址,而不复制指针所指向的对象.这样当把一个 ...

  2. Codeforces 550C —— Divisibility by Eight——————【枚举 || dp】

     Divisibility by Eight time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  3. .NET的EF框架中:在应用程序配置文件中找不到名为“”的连接字符串问题

    今天在使用EF Code First框架时,当把模型都定义好了,想通过程序包管理控制台利用enable-migrations –force来生成数据库表的时候报错了,如下: 找不到连接字符串,但是我仔 ...

  4. 由ArrayList来深入理解Java中的fail-fast机制

    1. fail-fast简介“快速失败”也就是fail-fast,它是Java集合的一种错误检测机制.某个线程在对collection进行迭代时,不允许其他线程对该collection进行结构上的修改 ...

  5. flask之wtforms 表单验证(一)

    一  安装wtforms pip install wtforms 二  导入相关模块及对象 from wtforms import Form, widgets, validators from wtf ...

  6. 微信公众号开发《三》微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

    本次讲解微信开发第三篇:获取用户地址位置信息,是非常常用的功能,特别是服务行业公众号,尤为需要该功能,本次讲解的就是如何调用微信JS-SDK接口,获取用户位置信息,并结合百度地铁,实现在线地图搜索,与 ...

  7. java.io.FileNotFoundException

    1. 概述 上传图片到 o:/mmfiles_2017/39973/25444/333.jpg目录下 目录不存在会报标题中的错误 必须先创建目录 2. 方法 File filePath = new F ...

  8. table中的td自动换行

    总有那么几个时候会觉得,table的td不能自适应换行真坑,凭什么只能用tr来换行,经常数据都是连在一起的呀,你叫我怎么把它拆分放到tr里...... 那能不能用ul和li来替换?可以是可以,不过有时 ...

  9. 关于Function原型对象和Object原型对象的一些疑惑

    网上有一道美团外卖的面试题是这样的: Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p ...

  10. QQ 聊天机器人小薇发布!

    简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息,发现有"感兴趣"的内容时通过图灵机器人进行智能回复 监 ...