★GBK、ASCII、UTF-8.. 编码大全

编码(信息交换标准代码)


编码的由来:

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示 1 和 0 )。

  • 例如,像 a、b、c、d 这样的 52 个字母(包括大写)以及 0、1 等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示。
  • 具体用哪些二进制数字表示哪个对应的符号,每个人都可以约定自己的一套(这就叫编码)。而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则。

编码格式的介绍:
ASCII码:

它用 7 个二进制位来表示,由于那个时期生产的大多数计算机使用 8 位大小的字节,因此用户不仅可以存放所有 可能的ASCII字符,而且有整整一位空余下来。如果你技艺高超,可以将该位用做自己离奇的目的。

ASCII第一次以规范标准的类型发表是在 1967年,最后一次更新则是在 1986年,到目前为止共定义了 128个字符。

  • 作用: 表语英语及西欧语言。

  • 位数: ASCII是用 7位表示的,能表示 128个 字符;其扩展使用 8位表示,表示 256个字符。

  • 范围: ASCII从00到7F,扩展从00到FF。

  • 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

ASCII码表

iso8859-1

属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母’a’的编码为0x61=97。

  • iso8859-1编码表示的字符范围很窄,无法表示中文字符。
    由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍 旧使用iso8859-1编码来表示。

  • 在很多协议上,默认使用该编码。

  • 虽然 “中文” 两个字不存在iso8859-1编码,以gb2312编码为 例,应该是"d6d0 cec4"两个字符,iso8859-1编码的则将它拆开为4个字节来表示:“d6 d0 ce c4”

事实上,在进行存储的时候,也是以字节为单位处理的。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。

  • 作用:扩展ASCII,表示西欧、希腊语等。

  • 位数:8位,

  • 范围:从00到FF,兼容ASCII字符集。

  • 英文 一个字节,不支持中文

Unicode编码:

Unicode字符集(简称为UCS),国际标准组织于1984年4月成立 ISO/IEC JTC1/SC2/WG2工作组,针对各国文字、符号进行统一性编码。
1991年美国跨国公司成立Unicode Consortium,并于1991年10月与WG2达成协议,采用同一编码字集。

目前Unicode是采用 16位编码体系,其字符集内容与 ISO10646的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通过DIS(Draf International Standard)

目前版本V2.0于1996公布,内容包含符号 6811个,汉字 20902个,韩文拼音 11172个,造字区 6400个,保留 20249个,共计 65534个。

Unicode编码后的大小是一样的

例如 一个英文字母 "a" 和 一个汉字 "好",编码后都是占用的空间大小是一样的,都是两个字节!

Unicode可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。

所以可以说它是不兼容iso8859-1编码的, 也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母'a'为"00 61"。

定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。

UNICODE字符集有多个编码方式,分别是UTF-8,UTF-16,UTF-32和UTF-7编码。

  • 作用:亚 美 采用同一编码字集。

  • 位数:16位,

  • 范围:符号 6811个,汉字 20902个,韩文拼音 11172个,造字区 6400个,保留 20249个,共计 65534个。

  • 英文 中文都占用两个字节,中英各自标点符号也是如此

字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。

UTF-8:

UTF:UCS Transformation Format.考虑到 unicode编码不兼容iso8859-1编码,而且容易占用更多的空间。
因为对于英文字母,unicode也需要两个字节来表 示。所以unicode不便于传输和存储。因此而产生了utf编码。

utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,
utf编码是不定长编码,每一个字符的长度从1-6个字节不等。
另外utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字 使用三个字节。

注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是 最节省的。

不过另一方面,值得说明的是,虽然 utf编码对汉字使用3个字节,但 即使对于汉字网页,utf编码也会比 unicode编码节省,因为网页中包 含了很多的英文字符。

  • 作用:unicode不便于传输和存储。utf 英文字节少便于传输。满足万恶的资本主义

  • 位数:8位

  • 范围:兼容iso8859-1编码,用来表示所有语言的字符

  • 英文 占用一个字节,中文占用三个字节

UTF8编码后的大小是不一定,例如 一个英文字母"a" 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!编码的方法是从低位到高位。黄色为标志位其它着色为了显示其,编码后的位置。

UTF-8编码规则: 如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。UTF-8转换表表示如下:

Unicode/UCS-4bit数UTF-8byte数备注
0000 ~ 007F0~70XXX XXXX1
0080 ~ 07FF8~11110X XXXX
10XX XXXX
2
0800 ~ FFFF12~161110 XXXX
10XX XXXX
10XX XXXX
3基本定义范围:0~FFFF
1 0000 ~ 1F FFFF17~211111 0XXX
10XX XXXX
10XX XXXX
10XX XXXX
4Unicode6.1定义范围:0~10 FFFF
20 0000 ~ 3FF FFFF22~261111 10XX
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
5说明:此非unicode编码范围,
属于UCS-4编码早期的规范UTF-8可以到达6字节序列,
可以覆盖到31位元(通用字符集原来的极限)。
尽管如此,2003年11月UTF-8被RFC3629重新规范,
只能使用原来Unicode定义的区域,U+0000到U+10FFFF。
根据规范,这些字节值将无法出现在合法UTF-8序列中
400 0000 ~ 7FFF FFFF27~311111 110X
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
6同上

UTF-16:

采用2 字节,Unicode中不同部分的字符都同样基于现有的标准。

这是为了便于转换。从 0x0000到0x007F是ASCII字符,从0x0080到0x00FF是ISO-8859-1对ASCII的扩展。希腊字母表使用从0x0370到 0x03FF 的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代 码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码;

由于0x00在c语言及操作系统文件名等中有特殊意义,故很多情况下需要UTF-8编码保存文本,去掉这个0x00。举例如下:

  • UTF-16: 0x0080 = 0000 0000 1000 0000

  • UTF-8: 0xC280 = 1100 0010 1000 0000

UTF-32:

采用4字节。

UTF-7:

A Mail-Safe Transformation Format of Unicode(RFC1642)。这是一种使用 7 位 ASCII 码对 Unicode 码进行转换的编码。
它的设计目的仍然是为了在只能传递 7 为编码的邮件网关中传递信息。

  • UTF-7 对英语字母、数字和常见符号直接显示,而对其他符号用修正的 Base64 编码。符号 + 和 - 号控制编码过程的开始和暂停。所以乱码中如果夹有英文单词,并且相伴有 + 号和 - 号,这就有可能是 UTF-7 编码。

  • 作用: 为世界650种语言进行统一编码,兼容ISO-8859-1。

  • 位数: UNICODE字符集有多个编码方式,分别是UTF-8,UTF-16和UTF-32。

很多人以为UTF-8等和Unicode都是字符集或都是编码方式,其实这是误区。



MyLover

GB2312-80 (信息交换用汉字编码字符集)标准:

GB2312-80 是 1980 年制定的中国汉字编码国家标准。

  • 共收录 7445个字符,基本集共收入汉字 6763个和非汉字图形字符 682个。

  • GB2312通常采用 EUC 储存方法,以便兼容于ASCII。浏览器编码表上的“ GB2312 ”,通常都是指“ EUC-CN ”表示法。

  • 每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。

所以 8 位二进制,汉字占2 个字节,16 个二进制。

GB2312 兼容标准 ASCII码,采用扩展 ASCII 码的编码空间进行编码.
一个汉字占用两个字节,每个字节的最高位为 1。
具体办法是:收集了 7445 个字符分成 94 个区,每区有 94 个位。
每一行称为一个 “区”,每一列称为一个“位”,每个区位上只有一个字符,区号位号的范围均为 01-94,
区号和位号组成的代码称为“区位码”。

把换算成十六进制的 区位码加上 2020H,就得到国标码。国标码加上 8080H,就得到常用的计算机机内码。

1995年又颁布了《汉字编码扩展规范》(GBK)。GBK与GB 2312—1980国家标准所对应的内码标准兼容,同时在字汇一级支持 ISO/IEC10646—1和GB 13000—1 的全部 中、日、韩(CJK) 汉字,共计 20902 字。

中国大陆几乎所有的中文系统和国际化的软件都支持 GB2312

  • 作用: 国家简体中文字符集,兼容ASCII。

  • 位数: 使用8位表示,使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。

  • 范围: 中、日、韩(CJK)汉字,共计 20902 字。

      01-09区为特殊符号。 例:0101 --> 0999
    
      16-55区为一级汉字,按拼音排序。
    
      56-87区为二级汉字,按部首/笔画排序。
    
      10-15区及88-94区则未有编码。
    
      举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。
    
      将区号和位号分别加上 20H(十六进制),得到的 4 位十六进制整数称为国标码,编码范围为 0x2121~0x7E7E。
      为了兼容标准 ASCII 码,给国标码的每个字节加 80H,形成的编码称为机内码,
      简称内码,是汉字在机器中实际的存储代码 GB2312-80 标准的内码范围是 0xA1A1~0xFEFE。
    
  • 汉字占2 个字节,英文占用一个(你也可以理解 他不支持英文,因为 他是将英文当做中文的拼音来看待的)

      GB 2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个
      GB 2312 收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个全角字符。
    

GB 2312 的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆 99.75% 的使用频率。
对于人名、古汉语等方面出现的罕用字,GB 2312 不能处理,这导致了后来 GBK 及GB 18030汉字字符集的出现。

GB2312简体中文编码表


GBK 编码标准:

《汉字内码扩展规范》(GBK) 于1995年制定

  • 兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码

  • 编码空间为 0x8140~0xFEFE,共有 23940 个码位,
    其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。

      GBK向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。
      ISO 10646 是国际标准化组织ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称UCS)
      大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》,它与 Unicode 组织的Unicode编码完全兼容。
      ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。
      我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1)。
    
  • 作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312。

  • 位数: 使用 2个字节表示,可表示 21886个字符。

  • 范围: 高字节从81到FE,低字节从40到FE。

  • 汉子占用两个字节,英文占用一个字节


GB18030编码标准:

汉字内码扩展规范》(GBK) 于1995年制定

  • 兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码
  • 编码空间为 0x8140~0xFEFE,共有 23940 个码位,
    其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。
  • 收录了 21003 个汉字。GBK向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。
  • ISO 10646 是国际标准化组织ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称UCS),大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》。
  • 它与 Unicode 组织的Unicode编码完全兼容。ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1)。

转换
1千吉字节(TB, KiloGigaByte) = 1024吉字节 (2的40次方字节)
(1TB = 1024GB)
1吉字节(GB, GigaByte) = 1024兆字节 (2的30次方字节)
(1GB=1024MB)
1兆字节(MB,MegaByte) =1024千字节 (2的20次方字节)
(1MB=1024KB)
1千字节(KB,KiloByte) =1024字节 (2的10次方字节)
1字节(Byte) = 8位(bit)
语言字符集正式名称
英语、西欧语ASCII,ISO-8859-1MBCS 多字节
简体中文GB2312MBCS 多字节
繁体中文BIG5MBCS 多字节
简繁中文GBKMBCS 多字节
中文、日文及朝鲜语GB18030MBCS 多字节
各国语言UNICODE,UCSDBCS 宽字节

ASCII码表
Bin(二进 制)Oct
(八进制)
Dec
(十进制)
Hex
(十六进制)
缩写/字符解释
0000 00000000x00NUL(null)空字符
0000 00010110x01SOH(start of headline)标题开始
0000 00100220x02STX (start of text)正文开始
0000 00110330x03ETX (end of text)正文结束
0000 01000440x04EOT (end of transmission)传输结束
0000 01010550x05ENQ (enquiry)请求
0000 01100660x06ACK (acknowledge)收到通知
0000 01110770x07BEL (bell)响铃
0000 100001080x08BS (backspace)退格
0000 100101190x09HT (horizontal tab)水平制表符
0000 1010012100x0ALF (NL line feed, new line)换行键
0000 1011013110x0BVT (vertical tab)垂直制表符
0000 1100014120x0CFF (NP form feed, new page)换页键
0000 1101015130x0DCR (carriage return)回车键
0000 1110016140x0ESO (shift out)不用切换
0000 1111017150x0FSI (shift in)启用切换
0001 0000020160x10DLE (data link escape)数据链路转义
0001 0001021170x11DC1 (device control 1)设备控制1
0001 0010022180x12DC2 (device control 2)设备控制2
0001 0011023190x13DC3 (device control 3)设备控制3
0001 0100024200x14DC4 (device control 4)设备控制4
0001 0101025210x15NAK (negative acknowledge)拒绝接收
0001 0110026220x16SYN (synchronous idle)同步空闲
0001 0111027230x17ETB (end of trans. block)结束传输块
0001 1000030240x18CAN (cancel)取消
0001 1001031250x19EM (end of medium)媒介结束
0001 1010032260x1ASUB (substitute)代替
0001 1011033270x1BESC (escape)换码(溢出)
0001 1100034280x1CFS (file separator)文件分隔符
0001 1101035290x1DGS (group separator)分组符
0001 1110036300x1ERS (record separator)记录分隔符
0001 1111037310x1FUS (unit separator)单元分隔符
0010 0000040320x20(space)空格
0010 0001041330x21!叹号
0010 0010042340x22"双引号
0010 0011043350x23#井号
0010 0100044360x24$美元符
0010 0101045370x25%百分号
0010 0110046380x26&和号
0010 0111047390x27闭单引号
0010 1000050400x28(开括号
0010 1001051410x29)闭括号
0010 1010052420x2A*星号
0010 1011053430x2B+加号
0010 1100054440x2C,逗号
0010 1101055450x2D-减号/破折号
0010 1110056460x2E.句号
0010 1111057470x2F/斜杠
0011 0000060480x300字符0
0011 0001061490x311字符1
0011 0010062500x322字符2
0011 0011063510x333字符3
0011 0100064520x344字符4
0011 0101065530x355字符5
0011 0110066540x366字符6
0011 0111067550x377字符7
0011 1000070560x388字符8
0011 1001071570x399字符9
0011 1010072580x3A:冒号
0011 1011073590x3B;分号
0011 1100074600x3C<小于
0011 1101075610x3D=等号
0011 111076620x3E>大于
0011 1111077630x3F?问号
0100 00000100640x40@电子邮件符号
0100 00010101650x41A大写字母A
0100 00100102660x42B大写字母B
0100 00110103670x43C大写字母C
0100 01000104680x44D大写字母D
0100 01010105690x45E大写字母E
0100 01100106700x46F大写字母F
0100 01110107710x47G大写字母G
0100 10000110720x48H大写字母H
0100 10010111730x49I大写字母I
010010100112740x4AJ大写字母J
0100 10110113750x4BK大写字母K
0100 11000114760x4CL大写字母L
0100 11010115770x4DM大写字母M
0100 11100116780x4EN大写字母N
0100 11110117790x4FO大写字母O
0101 00000120800x50P大写字母P
0101 00010121810x51Q大写字母Q
0101 00100122820x52R大写字母R
0101 00110123830x53S大写字母S
0101 01000124840x54T大写字母T
0101 01010125850x55U大写字母U
0101 01100126860x56V大写字母V
0101 01110127870x57W大写字母W
0101 10000130880x58X大写字母X
0101 10010131890x59Y大写字母Y
0101 10100132900x5AZ大写字母Z
0101 10110133910x5B[开方括号
0101 11000134920x5C\反斜杠
0101 11010135930x5D]闭方括号
0101 11100136940x5E^脱字符
0101 11110137950x5F_下划线
0110 00000140960x60`开单引号
0110 00010141970x61a小写字母a
0110 00100142980x62b小写字母b
0110 00110143990x63c小写字母c
0110 010001441000x64d小写字母d
0110 010101451010x65e小写字母e
0110 011001461020x66f小写字母f
0110 011101471030x67g小写字母g
0110 100001501040x68h小写字母h
0110 100101511050x69i小写字母i
0110 101001521060x6Aj小写字母j
0110 101101531070x6Bk小写字母k
0110 110001541080x6Cl小写字母l
0110 110101551090x6Dm小写字母m
0110 111001561100x6En小写字母n
0110 111101571110x6Fo小写字母o
0111 000001601120x70p小写字母p
0111 000101611130x71q小写字母q
0111 001001621140x72r小写字母r
0111 001101631150x73s小写字母s
0111 010001641160x74t小写字母t
0111 010101651170x75u小写字母u
0111 011001661180x76v小写字母v
0111 011101671190x77w小写字母w
0111 100001701200x78x小写字母x
0111 100101711210x79y小写字母y
0111 101001721220x7Az小写字母z
0111 101101731230x7B{开花括号
0111 110001741240x7C|垂线
0111 110101751250x7D}闭花括号
0111 111001761260x7E~波浪号
0111 111101771270x7FDEL (delete)删除

常见ASCII码的大小规则:0 ~ 9 < A ~ Z < a ~ z。

  1. 数字比字母要小。如 “7”<“F”;
  2. 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
  3. 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
  4. 同个字母的大写字母比小写字母要小32。如“A”<“a” 。

几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48



B


C


GB2312简体中文编码表

code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A1A0   、 。 · ˉ ˇ ¨ 〃 々 — ~ ‖ … ‘ ’
A1B0 “ ” 〔 〕 〈 〉 《 》 「 」 『 』 〖 〗 【 】
A1C0 ± × ÷ ∶ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠
A1D0 ⌒ ⊙ ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯ ≤ ≥ ∞ ∵
A1E0 ∴ ♂ ♀ ° ′ ″ ℃ $ ¤ ¢ £ ‰ § № ☆ ★
A1F0 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※ → ← ↑ ↓ 〓
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A2A0 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ ? ? ? ? ?
A2B0 ? ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖
A2C0 ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾
A2D0 ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③ ④ ⑤ ⑥ ⑦
A2E0 ⑧ ⑨ ⑩ ? ? 一 二 三 四 五 六 七 八 九 十 ?
A2F0 ? Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ ? ?
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A3A0 ! " # ¥ % & ’ ( ) * + , - . /
A3C0 @ A B C D E F G H I J K L M N O
A3D0 P Q R S T U V W X Y Z [ \ ] ^ _
A3E0 ` a b c d e f g h i j k l m n o
A3F0 p q r s t u v w x y z { | }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值