Unicode,UTF-8,UTF-16,UTF-32,gb2312,gbk区别

原创 2015年11月21日 15:55:23

1.ascII码。

0x0*******; 总共127个。 有英文字母和符号。


好吧,问题来了。英文够用了,其他不够用啊。于是用两种方法解决: 

a)GB2312 GBK 这一类的编码方式,用两位(2的16次方中变幻)来表示中文字符。 兼容ASC2

b)   Unicode编码。 世界上一切所有的字符(各个国家,各种字符)都囊括进来了,用两个字节(16位)来表示。UTF-8,UTF-16,UTF-32都属于Unicode编码,他们是Unicode编码的表现形式。


2.GB2312/GBK

聪明的中国人发现 asc2码表示不了中文后,就扩展了位数。所有的汉字字符都用2个字节(16位)表示。

于是先有了 GB2312。 GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。

然后发现还是有些没有包括进去,就又出现了GBK。GBK向下兼容GB2312和ASC2,他是GB2312的升级版。‘

GBK还收录了GB2312不包含的 汉字部首符号、竖排标点符号等字符。


3.Unicode

Unicode 做的跟国人GBK做的类似。但是格局更大。 GBK是收录了绝大部分汉字,部分阿拉伯符号,部分俄文,部分希腊字母等等。

Unicode收录的是全世界所有的文字和符号。 Unicode和ASC2兼容,但是与GB2312,GBK都不兼容。

所以世界上所有的符号都能用两个字节来表示。


这时候,中国人开心了,英文国家的人就不开心了。本来他们用asc2好好的,每个字符用一个字节表示,现在得用两个字节表示,这将占用带宽和硬盘呢。

于是他们基于Unicode发明了 UTF-8编码。


UTF-8是这样做的:

1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同;

2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。这样就形成了如下的UTF-8标记位:

0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
... ...


这样,UTF-8存储英文时只用占用一个字节了。省!


接下来说说 UTF-16,

UTF-16没啥好说的,就是所有字符用两个字节,16位来表示。(但是要分大端对其还是小端对其)

UTF-16就是把Unicode码搬过来,简单无脑,只是会多费点空间。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

&#x开头的是什么编码呢。浏览器可以解释它。如中国等同与中文"中国"?

形如—— &#dddd; &#xhhhh; &#name; ——的一串字符是 HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是「编码」。 ...

UTF-8与UTF-16的区别

UTF-8 与UTF-16的区别     UTF-16比较好理解,就是任何字符对应的数字都用两个字节来保存.我们通常对Unicode的误解就是把Unicode与UTF-16等同了.但是很显然如果都是...

UTF-8和UTF-16使用对比

UTF-16  说到 UTF 必须要提到 Unicode(Universal Code 统一码),ISO 试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字...

彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)

最近有一些朋友常问我一些乱码的问题,和他们交流过程中,发现这个编码的相关知识还真是杂乱不堪,不少人对一些知识理解似乎也有些偏差,网上百度,google的内容,也有不少以讹传讹,根本就是错误的(例如说 ...

字符编码的故事:ASCII,GB2312,Unicode,UTF-8,UTF-16

字符编码的故事:ASCII,GB2312,Unicode,UTF-8,UTF-16由于好奇,我非常想搞清楚关于字符编码的疑惑。比如Unicode,UTF-8,UTF-16,以及有BOM,无BOM之前的...

浅析unicode和UTF-8、UTF-16、UTF-32的区别

1、区别编码字符集和字符集编码首先要注意的是unicode是编码字符集,而UTF-8、UTF-16、UTF-32是字符集编码(好绕哎有没有)。下面我来具体解释一下:比如汉字的”汉”,在unicode中...

GB2312/GBK, ISO 8859-1, unicode,UTF(UTF-8/UTF-16/UTF-32)之间的区别与联系

1 GB2312/GBK Chinese Internal Code Specification,全称《汉字内码扩展规范》。GB2312是中国规定的汉字编码,国标码,专门用来表示汉字,是双字节编码。G...

gbk, gb2312,big5,unicode,utf-8,utf-16的区别

本文转自http://blog.chinaunix.net/uid-446337-id-94462.html详细说明了各种编码的区别于联系,对于支持国际化很重要,否则各种乱码能搞死人! Un...

gbk, gb2312,big5,unicode,utf-8,utf-16的区别详细介绍

标题 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 选择自 fmddlmyy 的 Blog 关键字 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 这是一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)