编码(信息交换标准代码)
编码的由来:
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示 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 可打印的字符
字符 编号 描述
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)
UTF-8:
UTF:UCS Transformation Format.考虑到 unicode编码不兼容iso8859-1编码,而且容易占用更多的空间。
因为对于英文字母,unicode也需要两个字节来表 示。所以unicode不便于传输和存储。因此而产生了utf编码。
注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是 最节省的。
不过另一方面,值得说明的是,虽然 utf编码对汉字使用3个字节,但 即使对于汉字网页,utf编码也会比 unicode编码节省,因为网页中包 含了很多的英文字符。
作用:unicode不便于传输和存储。utf 英文字节少便于传输。满足万恶的资本主义
位数:8位
范围:兼容iso8859-1编码,用来表示所有语言的字符
英文 占用一个字节,中文占用三个字节
UTF8编码后的大小是不一定,例如 一个英文字母"a" 和 一个汉字 “好”,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!编码的方法是从低位到高位。黄色为标志位其它着色为了显示其,编码后的位置。
UTF-8编码规则: 如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。UTF-8转换表表示如下:
GBK 编码标准:
《汉字内码扩展规范》(GBK) 于1995年制定
兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码
编码空间为 0x8140~0xFEFE,共有 23940 个码位,
其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。
作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312。
位数: 使用 2个字节表示,可表示 21886个字符。
范围: 高字节从81到FE,低字节从40到FE。
汉子占用两个字节,英文占用一个字节
URL编码
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和具中的值,将它们name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:
编码规则:
URL编码遵循下列规则:每对namelvalue由&;符分开;每对来自表单的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