编码浅析 ASCII EASCII GBK系列 Uincode UTF-8/16/32
编码浅析 ASCII EASCII GBK系列 Uincode UTF-8/16/32
前言
本文主要是简浅的谈论一下编码的一些知识和容易的误区。不进行太过深入的解析。
ASCII
ASCII是第一个通用性质的计算机编码,于1967年发布版本,占用1个字节,采取ISO646标准,主要是拉丁文的一些字符,可以表示128个字符。
这里可能会有人有疑惑,2^8应该是256,为什么只能表示128个?
那是因为最高的7bit是用于奇偶校验位,验证数据的准确性。
EASCII
后期人们对最高位的奇偶校验的需求性降低,于是扩展了ASCII,也就是EASCII,采取ISO8859-1-1987版的出现,扩展了128个字符,主要是拓展了计算机发展较为快速和发达的欧美地区的语言文字,一些重英字元和一些小写的希腊字母。
以下说的兼容ASCII仅表示等于,不表示等同,因为0001H和01H表示的含义是不一样的,一个是2个字节表示,另一个是1个字节表示。其他均兼容ASCII,不一定兼容EASCII
中国的发展
GB2312
下文中,第一个编码较为详细,一般都是后面的基础,后面的较为简略。
GB2312,于1980年出现,一款拥有汉字编码,中国人自己设计的编码规则。一个汉字占用2byte,可以表示6763个汉字,682个其他字符,汉字又划分1,2两级。
1级汉字,收录3755个,按照拼音音序排列
2级汉字,收录3088个,按照偏旁部首/笔画排列
编码区域地址A1A1-FEFE,其中汉字占的编码区域B0A1-F1FE
一个划分94个区域,每个区域94个编码号,共94*94=8836个码
01-09区
主要是非汉字区域 682个字符
10-15区
为空白区域
16-55区
为1级汉字区域,拼音排序
56-87
为2级汉字区域,部首/笔画排序
68-94
空白区
编码规则
高byte表示区域 汉字区域码16-87对应的地址就是B0-F7
低byte表示区位码,01-94对应的就是A1-FE
例如:啊
啊是汉字的第一个编码,也就是16区的第一个,则他的编码就是
16对应B0,1对应A1,啊的编码也就是B0A1
GBK
GBK兼容GB2312,于1995年,一家叫方正的企业设计,占2byte,共23940个编码,收录汉字21003个(包含一些日韩的汉字),图形符号883个(但是不包含所有的汉字,50多个简体汉字就暂未收录)
地址8140-FEFE,去除各个的XX7F
高:81-FE
低:40-FE
设定了用户可自定义的区域
AAA1-AFEF 564
F8A1-FEFE 658
A140-A7A0 672
GB18030
GB18030包含了所有的汉字和少数民族字符,2000年出一版,2005年完善。
2000年版时就采取单双和四字节编码
单字节兼容ASCII,双字节兼容GBK,四字节主要用于少数民族的字符。
世界
Unicode
随着计算机的全面发展,人们也开始想办法编一套兼容全世界的编码。1994年,一套统一的编码符就诞生了,也就是Unicode,采取了2个字节或者4个字节(不同字节采取的标准也不同)。
需要注意的是Unicode是一个字符集,而不是编码规则,所以人们又设计了一套编码规则UTF系列,去对其进行编码。一共将其分成17个平面或者叫区(0-16)
UTF-8
UTF-8采取的是可变长度编码,编码长度范围为1-4个字节。在UTF-8中,常用的汉字编码占2个字节(BMP),不常用的占4个字节。
编码规则
一个字节的 0XXX XXXX
二个字节的 110X XXXX 10XX XXXX
三个字节的 1110 XXXX 10XX XXXX 10XX XXXX
四个字节的 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX
UTF-16
UTF-16的诞生主要是为了达到UTF-32,有了UTF-8为什么还会产生UTF-16?
通过观察UTF-8就可以发现编码一个优先发展计算机的编码比后面再发展起来的所占的内存资源要少,例如,一个英文字母就只需要1个字节,而一些偏僻的语言就需要4个。
UTF-16编码只有2或者4个字节的编码。
BMP的中文2个字节,非BMP的则4个。
UTF-32
UTF-32采取的是全部是4个字节。
后记
这也不仅仅只是一部简单的编码发展史,同样也鞭策着我们,落后只会留下更少的生存空间。
士不可以不弘毅,任重而道远。
编码浅析 ASCII EASCII GBK系列 Uincode UTF-8/16/32相关推荐
- 字符集与字符编码(ASCII、GBK、UNICODE)
0 总结 需要注意字符集和字符编码是不同的.比如当我们提到"数据库使用的是unicode字符集",这样的说法是错误的,数据库中的数据一定要具体到某一种字符编码,只提到字符集是没有意 ...
- 四、字符编码:ascii、gbk、Unicode、utf-8
编码和解码: 编码(encode)和解码(decode):计算机中储存的信息都是用二进制数表示的:而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机 ...
- 字符的编码方式 ASCII 、GBK 、UTF-8 、Unicode 、Unicode big endian
字符的编码方式很多种 ,我们常用到的是ASCII .GBK .UTF-8 .Unicode .Unicode big endian等. 想查看的话,可以用记事本新建一个txt文档,里面输入字符或汉字, ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
- 一文读懂字符编码(ASCII、ISO 8859、GB系列、Unicode)
一文读懂字符编码(ASCII.ISO 8859.GB系列.Unicode) 一.字符编码相关组织 1.1 ANSI 美国国家标准学会 1.2 Ecma 国际 1.3 ISO/IEC 1.4 统一码联盟 ...
- ASCII Unicode GBK UTF的联系
快下班时,爱问问题的小朋友Nico又问了一个问题: "sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思." 并不是所有简单的问题都很 ...
- [编码]ASCII、GBK、Unicode(万国码) 和 UTF-8
American ASCII编码 (American Standard Code for Information Interchange,美国信息互换标准代码) China gbk编码 ...
- 字符编码的故事(ASCII ISO GBK GB2312 UTF-8)
转载自:http://yuncode.net/article/a_520afe25b065d13 另有一篇对"UTF-8 GBK UTF8 GB2312 之间的区别和关系"描述比较 ...
- 深入理解-字符编码ASCII,GB2312,GBK,Unicode,UTF-8
字符编码 简介 起初再考虑写不写这篇文章,感觉这篇文章比较枯燥乏味,而且自己感觉也没理解的太透彻,就把理解的记录下来,所以这是纪念版的 前方高能,非战斗人员请迅速撤离,我要开始装逼了. Go hard ...
- 分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view
分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view ...
最新文章
- SQL server 2008 数据库企业版安装教程图解 (转载)
- spi 外设驱动(spi_driver)
- .net 获取网站根目录的方法
- JDBC在jsp中的使用
- 计算几何的模板(大神整理)
- 如何禁止某个程序修改计算机,电脑如何禁止某个程序运行?
- Android 角标设置
- 51单片机游戏(俄罗斯方块)
- JavaScript - 动画介绍与学习
- win10关闭自带的杀毒
- 计算机学院方阵入场词,运动会入场方队解说词
- python read()读取图片_可以python sitk.ReadImage读取列表/系列图像吗?
- 现代计算机体系结构发明人,cpu的发明人是谁啊?
- 学习微博中情感分类的句子表达(NLPCC2013)
- 洛谷P1425小鱼的游泳时间【c语言】
- 纯CSS制作3D动态相册【流星雨3D旋转相册】HTML+CSS+JavaScriptHTML5七夕情人节表白网页制作
- Android中第三方SDK集成之ZXing二维码扫一扫集成指南
- [英语-001] 十大词性
- 用C语言给孩子水果英语早教,幼儿英语早教水果,12种水果怎么读英语?
- Dancing Link --- 模板题 HUST 1017 - Exact cover