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码搬过来,简单无脑,只是会多费点空间。

【编码】ASCII、Unicode、GBK和UTF-8字符编码的区别联系

ASCII、Unicode、GBK和UTF-8字符编码的区别联系2015-05-08 实验楼很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开...
  • u010262331
  • u010262331
  • 2015年05月26日 21:40
  • 5354

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

一、编码历史与区别         一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以...
  • LVXIANGAN
  • LVXIANGAN
  • 2012年11月06日 10:33
  • 83852

GB2312与utf16、utf8的汉字对照表

GB2312标准共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。 本文将GB2312中所有的汉字,在GB2312、utf16及utf8中的编码值都列了出来,方便进行对照查看。...
  • lintax
  • lintax
  • 2016年07月16日 13:16
  • 4474

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

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

关于UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE

        Unicode是Unicode.org制定的编码标准,目前得到了绝大部分操作系统和编程语言的支持。Unicode.org官方对Unicode的定义是:Unicode provides ...
  • dengyunze
  • dengyunze
  • 2004年10月31日 15:18
  • 14294

utf-16和unicode区别

转:http://blog.sina.com.cn/s/blog_4d25c9870100epc1.html Unicode转UTF-16 一.UTF-16      UTF-16是Unico...
  • pzasdq
  • pzasdq
  • 2016年04月12日 11:27
  • 1122

Python里的string 和 unicode (一)

首先要弄清楚的是,在python里,string object和unicode object是两种不同的类型。string object是由characters组成的sequence,而unicode...
  • FeiSan
  • FeiSan
  • 2007年06月26日 12:40
  • 20641

Unicode(UTF-8, UTF-16)令人混淆的概念

为啥需要Unicode         我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示...
  • u011447369
  • u011447369
  • 2017年02月17日 10:01
  • 1769

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

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

Unicode编码及其实现:UTF-16、UTF-8,and more

田海立@CSDN2012-04-25本文主要讨论Unicode的编码及其各种实现,着重讨论UTF-16,UTF-8的实现规则,以及Big-endian和Little-Endian的存储顺序。一、Uni...
  • thl789
  • thl789
  • 2012年04月25日 21:30
  • 8849
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unicode,UTF-8,UTF-16,UTF-32,gb2312,gbk区别
举报原因:
原因补充:

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