编码 Unicode utf-8
编码的发展史:
- 一开始计算机只在美国使用。8位的字节可以组合出256种不同的状态。他们将0到32种状态规定为”控制码“,后来又用其中32号以后的状态表示空格、标点符号、数字和大小写字母。这样一直编到了127号状态。这样计算机就可以用不同字节来存储英文的文字了。这种指定某个状态为某个动作或者符号的过程称为编码。而以上的方案的编码称为ASNI的ASCII编码(ASCII: American Standard Code for Information Interchange, 美国信息互换标准代码)。当时世界上所有的计算机都是用同样的ASCII方案来保存英文字。
- 后来欧洲各地都开始使用计算机,但是很多国家是英用的不文。于是各国人民决定用127号之后的空位来表示新的字母、符号。ASCII从127个扩展到255个。至此,8位的字节所有状态都用了,没有新的状态可以用了。
- 等到中国人们得到计算机,已经没有可以利用的字节状态来表示汉字了。更何况中国有6000多个常用汉字需要编码。这个难不倒中国人。我们不客气的将127号之后的奇葩符号直接取消掉,并且规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起是,就表示一个汉字,前面一个字节(即高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE,这样就可以组合出大约7000多个简体汉字了。其中,还包括数学符号、罗马希腊字母、日本的假名,在ASCII里本来就有的数字、标点、字母都重新编了两个字节长的编码。两个字节长的字符常称为”全角“字符, 而原来127号以下的字符常称为”半角“字符。这种ASCII的汉字扩展方案叫做”GB2313“
- 后来中国人还是觉得不够,于是就干脆不要要求低字节一定是要大于127的内码。而规定只要高字节大于127,低字节可以取尽0-255. 结果又增加了近20000个新的汉字和符号。而这种编码方案称为”GBK“,它包含了”GB2312“的所有内容。后来少数民族也用电脑了,于是我们再扩展,GBK扩成了GB18030.
- 中国自己扩展了ASCII,其他国家也自己扩展了ASCII。结果是相互之间谁也不懂谁的编码,谁也不支持谁的编码。这样一旦中国要显示印度的文字,就是一片乱码。而且还有那些一时用不上电脑的穷苦人民,他们的文字怎么办?
- 百乱之中, ISO(国际标准化组织)着手解决这个问题。他们的方法:废了所有的地区性编码方案,重新搞一个包括地球上所有文化、所有字母和符合的编码。它叫”UNversal Multiple-Octet Coded Character Set“, 俗称”UNICODE“。Unicode开始制订时,计算机的存储器容量已经极大的发展了,空间再也不成问题。于是ISO就直接规定必须用两个字节(16位)来统一表示所有字符。对于ASCII里的前127个字符,Unicode保持其编码不变,只是在其前面加8个零,扩展为16位。而其他文化的语言字符则全部重新统一编码。
- 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相关推荐
- 字符编码 unicode 及其在javascript 中的使用
一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(Byte),计算机内存最小寻址单位就是 1 字节. 早期为了在计 ...
- 编码 unicode 及其在 javascript 中的使用
编码 unicode 及其在 javascript 中的使用 一.javascript 使用 unicode16 字符集,可以使用中文变量名和函数名 计算机使用 8 位(bit)二进制表示一个字节(B ...
- 编码Unicode与解码
1.编码(Unicode) unicode(统一码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,以 ...
- 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
GBK,ISO-8859-1,GB2312的本质区别 编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标 ...
- python中unicode编码表_Python中的字符串操作和编码Unicode详解
本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧. 字符串类型 str:Unicode字符串.采用''或者r''构造的字符 ...
- mac 文本编辑器 文本编码Unicode utf-8 不适用的问题
在mac上使用默认的文本编辑器打开下载的xx.txt文件,如果文本是gbk的编码可能会出现 文本编码Unicode utf-8 不适用的打开错误,如下图 解决方式: 文本编辑---偏好设置-----打 ...
- 引用 字库编码Unicode相关知识
引用 weifeng.shen 的 字库编码Unicode相关知识 1. 各地编码 首先说明一下现在常用的一些编码方案: 1. 在中国,大陆最常用的就是GBK18030编码, ...
- html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程
html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
- Unity中获取字符串长度、Unicode字符数量和编码ASCII,UTF,GBK的区别
1.String.Length,String.ToCharArray,StringInfo,Encoding.UTF8.GetByteCount的区别: String.Length:获取的是字符串中C ...
最新文章
- Python 判断类型
- Shiro内置的FilterChain
- js打乱数组的顺序_如何用 js 实现一个类似微信红包的随机算法
- 数据库文档生成工具V1.0
- listView当中有嵌套了有onClickListener的控件时ListView自身的onItemClick无响应的解决方案...
- php 的点代表什么意思,linux .(点)是什么意思
- Android开发中listView的item无法获取焦点
- 真的存在网络钓鱼吗?网络钓鱼技术之HTML走私分析
- 软件评测师教程书本对软考的作用有多大?
- dcs系统中数据服务器的冗余,如何提升DCS系统的可靠性?这篇文章讲透了
- 互联网产品经理的工作职责
- H5+CSS 实现前面带搜索图标的搜索框
- java 的vm是什么_java – 什么是VM,为什么动态语言需要一个?
- npm rebuild记录
- 实习生、应届生、三方协议、实习协议、劳动合同的区别
- dd命令 刻录U盘启动
- openstack 自己制作云桌面linux瘦客户机
- 【数据工具】高德地图POI数据下载工具(支持选择省市以及POI类型)
- 说说淘宝和中小卖家的未来
- 中国护士总量严重不足 “滴滴打针”会是水中捞月吗?
热门文章
- 游戏编程设计模式——Game Loop
- springboot dubbo 问题记录
- 开发Windows Mobile和Wince(Windows Embedded CE)的部署项目(Deploy Project)时,如何修改注册表...
- JS如何设置获取盒模型对应的宽高
- [Luogu 3258] JLOI2014 松鼠的新家
- IDEA overwrite报错、languagelevel设置不生效问题
- X509证书认证流程介绍
- centos7下安全访问远程服务器
- ElasticStack系列之八 _source 字段
- Python第四章__装饰器、迭代器