目录
GBK
GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification) ,*全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司、电子工业部科技与质量监督司1995年12月15日联合以技监标函1995 229号文件的形式,将它确定为技术规范指导性文件。2000年已被GB18030-2000《信息交换用 汉字编码字符集 基本集的扩充》国家强制标准替代。 2005年GB18030-2005发布,替代了GB18030-2000。
基本含义:
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)。
GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年10月制定, 1995年12月正式发布,中文版的WIN95、WIN98、WINDOWS NT以及WINDOWS 2000、WINDOWS XP、WIN 7等都支持GBK编码方案。
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)。
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。
汉子占用两个字节,英文占用一个字节
UTF-8
UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
字符集
UTF-8编码规则:如果只有一个字节则取值为\x00-\x7F。其余字节按长度进行以下拓展:
UTF-8由4种编码方式实现,即UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 [2] 。其中:
UTF8-1 |
\x00-\x7F |
UTF8-2 |
\xC2-\xDF \x80-\xBF |
UTF8-3 |
\xE0 \xA0-\xBF \x80-\xBF \xE1-\xEC \x80-\xBF \x80-\xBF \xED \x80-\x9F \x80-\xBF \xEE-\xEF \x80-\xBF \x80-\xBF |
UTF8-4 |
\xF0 \x90-\xBF \x80-\xBF \x80-\xBF \xF1-\xF3 \x80-\xBF \x80-\xBF \x80-\xBF \xF4 \x80-\x8F \x80-\xBF \x80-\xBF |
注:每种编码可能有多个编码范围,每个编码范围间,以空格作为每个字节的分隔符。例如UTF8-3的第一个编码,其第一个字节取值必须为\xE0,第二个字节范围为\xA0-\xBF,第三个字节为\x80-\xBF。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
下面,以汉字“严”为例,演示如何实现UTF-8编码。
已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5。
ASCLL
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
ASCII 字符集
ASCII ,它的全称是"美国信息交换标准代码"。它设计于60年代早期,是计算机和诸如打印机、磁带驱动器之类的硬件设备的标准字符集。
ASCII 是 7 比特字符集,包含了 128 个不同的字符值。
ASCII 支持 0-9 的数字,A-Z大写和小写英文字母,以及一些特殊字符。
被广泛使用于现代计算机、HTML和因特网上的字符集都是基于 ASCII 。
以下表格列举了128个 ASCII 字符以及对应的 HTML 实体编码。
ASCII 可打印的字符
字符 | 编号 | 描述 |
---|---|---|
32 | 空格(space) | |
! | 33 | 感叹号(exclamation mark) |
" | 34 | 引号(quotation mark) |
# | 35 | 数字符号(number sign) |
$ | 36 | 美元符号(dollar sign) |
% | 37 | 百分比符号(percent sign) |
& | 38 | & 符号(ampersand) |
' | 39 | 撇号(apostrophe) |
( | 40 | 左括号(left parenthesis) |
) | 41 | 右括号(right parenthesis) |
* | 42 | 星号(asterisk) |
+ | 43 | 加号(plus sign) |
, | 44 | 逗号(comma) |
- | 45 | 连字符(hyphen) |
. | 46 | 句号(period) |
/ | 47 | 斜线(slash) |
0 | 48 | 数字 0 |
1 | 49 | 数字 1 |
2 | 50 | 数字 2 |
3 | 51 | 数字 3 |
4 | 52 | 数字 4 |
5 | 53 | 数字 5 |
6 | 54 | 数字 6 |
7 | 55 | 数字 7 |
8 | 56 | 数字 8 |
9 | 57 | 数字 9 |
: | 58 | 冒号(colon) |
; | 59 | 分号(semicolon) |
< | 60 | 小于号(less-than) |
= | 61 | 等于号(equals-to) |
> | 62 | 大于号(greater-than) |
? | 63 | 问号(question mark) |
@ | 64 | @ 符号(at sign) |
A | 65 | 大写字母 A |
B | 66 | 大写字母 B |
C | 67 | 大写字母 C |
D | 68 | 大写字母 D |
E | 69 | 大写字母 E |
F | 70 | 大写字母 F |
G | 71 | 大写字母 G |
H | 72 | 大写字母 H |
I | 73 | 大写字母 I |
J | 74 | 大写字母 J |
K | 75 | 大写字母 K |
L | 76 | 大写字母 L |
M | 77 | 大写字母 M |
N | 78 | 大写字母 N |
O | 79 | 大写字母 O |
P | 80 | 大写字母 P |
Q | 81 | 大写字母 Q |
R | 82 | 大写字母 R |
S | 83 | 大写字母 S |
T | 84 | 大写字母 T |
U | 85 | 大写字母 U |
V | 86 | 大写字母 V |
W | 87 | 大写字母 W |
X | 88 | 大写字母 X |
Y | 89 | 大写字母 Y |
Z | 90 | 大写字母 Z |
[ | 91 | 左方括号(left square bracket) |
\ | 92 | 反斜线(backslash) |
] | 93 | 右方括号(right square bracket) |
^ | 94 | 插入符号(caret) |
_ | 95 | 下划线(underscore) |
` | 96 | 重音符(grave accent) |
a | 97 | 小写字母 a |
b | 98 | 小写字母 b |
c | 99 | 小写字母 c |
d | 100 | 小写字母 d |
e | 101 | 小写字母 e |
f | 102 | 小写字母 f |
g | 103 | 小写字母 g |
h | 104 | 小写字母 h |
i | 105 | 小写字母 i |
j | 106 | 小写字母 j |
k | 107 | 小写字母 k |
l | 108 | 小写字母 l |
m | 109 | 小写字母 m |
n | 110 | 小写字母 n |
o | 111 | 小写字母 o |
p | 112 | 小写字母 p |
q | 113 | 小写字母 q |
r | 114 | 小写字母 r |
s | 115 | 小写字母 s |
t | 116 | 小写字母 t |
u | 117 | 小写字母 u |
v | 118 | 小写字母 v |
w | 119 | 小写字母 w |
x | 120 | 小写字母 x |
y | 121 | 小写字母 y |
z | 122 | 小写字母 z |
{ | 123 | 左花括号(left curly brace) |
| | 124 | 竖线(vertical bar) |
} | 125 | 右花括号(right curly brace) |
~ | 126 | 波浪线(tilde) |
ASCII 设备控制字符
ASCII 控制字符(00-31,加上 127)最初被设计用来控制诸如打印机和磁带驱动器之类的硬件设备。
控制字符(除了水平制表符、换行、回车之外)在 HTML 文档中不起任何作用。
字符 | 编号 | 描述 |
---|---|---|
NUL | 00 | 空字符(null character) |
SOH | 01 | 标题开始(start of header) |
STX | 02 | 正文开始(start of text) |
ETX | 03 | 正文结束(end of text) |
EOT | 04 | 传输结束(end of transmission) |
ENQ | 05 | 请求(enquiry) |
ACK | 06 | 收到通知/响应(acknowledge) |
BEL | 07 | 响铃(bell) |
BS | 08 | 退格(backspace) |
HT | 09 | 水平制表符(horizontal tab) |
LF | 10 | 换行(line feed) |
VT | 11 | 垂直制表符(vertical tab) |
FF | 12 | 换页(form feed) |
CR | 13 | 回车(carriage return) |
SO | 14 | 不用切换(shift out) |
SI | 15 | 启用切换(shift in) |
DLE | 16 | 数据链路转义(data link escape) |
DC1 | 17 | 设备控制 1(device control 1) |
DC2 | 18 | 设备控制 2(device control 2) |
DC3 | 19 | 设备控制 3(device control 3) |
DC4 | 20 | 设备控制 4(device control 4) |
NAK | 21 | 拒绝接收/无响应(negative acknowledge) |
SYN | 22 | 同步空闲(synchronize) |
ETB | 23 | 传输块结束(end transmission block) |
CAN | 24 | 取消(cancel) |
EM | 25 | 已到介质末端/介质存储已满(end of medium) |
SUB | 26 | 替补/替换(substitute) |
ESC | 27 | 溢出/逃离/取消(escape) |
FS | 28 | 文件分隔符(file separator) |
GS | 29 | 组分隔符(group separator) |
RS | 30 | 记录分隔符(record separator) |
US | 31 | 单元分隔符(unit separator) |
DEL | 127 | 删除(delete) |
URL编码
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:
theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
编码规则
URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。
编码表
backspace %08 |
I %49 |
v %76 |
ó %D3 |
tab %09 |
J %4A |
w %77 |
Ô %D4 |
linefeed %0A |
K %4B |
x %78 |
Õ %D5 |
creturn %0D |
L %4C |
y %79 |
Ö %D6 |
space %20 |
M %4D |
z %7A |
Ø %D8 |
! %21 |
N %4E |
{ %7B |
ù %D9 |
" %22 |
O %4F |
| %7C |
ú %DA |
# %23 |
P %50 |
} %7D |
Û %DB |
$ %24 |
Q %51 |
~ %7E |
ü %DC |
% %25 |
R %52 |
¢ %A2 |
Y %DD |
& %26 |
S %53 |
£ %A3 |
T %DE |
' %27 |
T %54 |
¥ %A5 |
ß %DF |
( %28 |
U %55 |
| %A6 |
à %E0 |
) %29 |
V %56 |
§ %A7 |
á %E1 |
* %2A |
W %57 |
« %AB |
a %E2 |
+ %2B |
X %58 |
¬ %AC |
ã %E3 |
, %2C |
Y %59 |
ˉ %AD |
ä %E4 |
- %2D |
Z %5A |
o %B0 |
å %E5 |
. %2E |
[ %5B |
± %B1 |
æ %E6 |
/ %2F |
\ %5C |
a %B2 |
ç %E7 |
0 %30 |
] %5D |
, %B4 |
è %E8 |
1 %31 |
^ %5E |
μ %B5 |
é %E9 |
2 %32 |
_ %5F |
» %BB |
ê %EA |
3 %33 |
` %60 |
¼ %BC |
ë %EB |
4 %34 |
a %61 |
½ %BD |
ì %EC |
5 %35 |
b %62 |
¿ %BF |
í %ED |
6 %36 |
c %63 |
à %C0 |
î %EE |
7 %37 |
d %64 |
á %C1 |
ï %EF |
8 %38 |
e %65 |
 %C2 |
e %F0 |
9 %39 |
f %66 |
à %C3 |
ñ %F1 |
: %3A |
g %67 |
Ä %C4 |
ò %F2 |
; %3B |
h %68 |
Å %C5 |
ó %F3 |
< %3C |
i %69 |
Æ %C6 |
ô %F4 |
= %3D |
j %6A |
Ç %C7 |
õ %F5 |
> %3E |
k %6B |
è %C8 |
ö %F6 |
%3F |
l %6C |
é %C9 |
÷ %F7 |
@ %40 |
m %6D |
ê %CA |
ø %F8 |
A %41 |
n %6E |
Ë %CB |
ù %F9 |
B %42 |
o %6F |
ì %CC |
ú %FA |
C %43 |
p %70 |
í %CD |
û %FB |
D %44 |
q %71 |
Î %CE |
ü %FC |
E %45 |
r %72 |
Ï %CF |
y %FD |
F %46 |
s %73 |
D %D0 |
t %FE |
G %47 |
t %74 |
Ñ %D1 |
ÿ %FF |
H %48 |
u %75 |
ò %D2 |