产生原因
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
美国信息交换标准代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,是一种标准的单字节字符编码方案,用于基于文本的数据。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,后来它被国际标准化组织(International Organization for Standardization, ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母 。
表达方式
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 [1] 。其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1 。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号 。
标准表
ASCII码表具体如下所示Bin
(二进制)
Oct
(八进制)
Dec
(十进制)
Hex
(十六进制)
缩写/字符
解释
|
0000 0000
00
0
0x00
NUL(null)
空字符
|
0000 0001
01
1
0x01
SOH(start of headline)
标题开始
|
0000 0010
02
2
0x02
STX (start of text)
正文开始
|
0000 0011
03
3
0x03
ETX (end of text)
正文结束
|
0000 0100
04
4
0x04
EOT (end of transmission)
传输结束
|
0000 0101
05
5
0x05
ENQ (enquiry)
请求
|
0000 0110
06
6
0x06
ACK (acknowledge)
收到通知
|
0000 0111
07
7
0x07
BEL (bell)
响铃
|
0000 1000
010
8
0x08
BS (backspace)
退格
|
0000 1001
011
9
0x09
HT (horizontal tab)
水平制表符
|
0000 1010
012
10
0x0A
LF (NL line feed, new line)
换行键
|
0000 1011
013
11
0x0B
VT (vertical tab)
垂直制表符
|
0000 1100
014
12
0x0C
FF (NP form feed, new page)
换页键
|
0000 1101
015
13
0x0D
CR (carriage return)
回车键
|
0000 1110
016
14
0x0E
SO (shift out)
不用切换
|
0000 1111
017
15
0x0F
SI (shift in)
启用切换
|
0001 0000
020
16
0x10
DLE (data link escape)
数据链路转义
|
0001 0001
021
17
0x11
DC1 (device control 1)
设备控制1
|
0001 0010
022
18
0x12
DC2 (device control 2)
设备控制2
|
0001 0011
023
19
0x13
DC3 (device control 3)
设备控制3
|
0001 0100
024
20
0x14
DC4 (device control 4)
设备控制4
|
0001 0101
025
21
0x15
NAK (negative acknowledge)
拒绝接收
|
0001 0110
026
22
0x16
SYN (synchronous idle)
同步空闲
|
0001 0111
027
23
0x17
ETB (end of trans. block)
结束传输块
|
0001 1000
030
24
0x18
CAN (cancel)
取消
|
0001 1001
031
25
0x19
EM (end of medium)
媒介结束
|
0001 1010
032
26
0x1A
SUB (substitute)
代替
|
0001 1011
033
27
0x1B
ESC (escape)
换码(溢出)
|
0001 1100
034
28
0x1C
FS (file separator)
文件分隔符
|
0001 1101
035
29
0x1D
GS (group separator)
分组符
|
0001 1110
036
30
0x1E
RS (record separator)
记录分隔符
|
0001 1111
037
31
0x1F
US (unit separator)
单元分隔符
|
0010 0000
040
32
0x20
(space)
空格
|
0010 0001
041
33
0x21
!
叹号
|
0010 0010
042
34
0x22
"
双引号
|
0010 0011
043
35
0x23
#
井号
|
0010 0100
044
36
0x24
$
美元符
|
0010 0101
045
37
0x25
%
百分号
|
0010 0110
046
38
0x26
&
和号
|
0010 0111
047
39
0x27
'
闭单引号
|
0010 1000
050
40
0x28
(
开括号
|
0010 1001
051
41
0x29
)
闭括号
|
0010 1010
052
42
0x2A
*
星号
|
0010 1011
053
43
0x2B
+
加号
|
0010 1100
054
44
0x2C
,
逗号
|
0010 1101
055
45
0x2D
-
减号/破折号
|
0010 1110
056
46
0x2E
.
句号
|
0010 1111
057
47
0x2F
/
斜杠
|
0011 0000
060
48
0x30
0
字符0
|
0011 0001
061
49
0x31
1
字符1
|
0011 0010
062
50
0x32
2
字符2
|
0011 0011
063
51
0x33
3
字符3
|
0011 0100
064
52
0x34
4
字符4
|
0011 0101
065
53
0x35
5
字符5
|
0011 0110
066
54
0x36
6
字符6
|
0011 0111
067
55
0x37
7
字符7
|
0011 1000
070
56
0x38
8
字符8
|
0011 1001
071
57
0x39
9
字符9
|
0011 1010
072
58
0x3A
:
冒号
|
0011 1011
073
59
0x3B
;
分号
|
0011 1100
074
60
0x3C
<
小于
|
0011 1101
075
61
0x3D
=
等号
|
0011 1110
076
62
0x3E
>
大于
|
0011 1111
077
63
0x3F
?
问号
|
0100 0000
0100
64
0x40
@
电子邮件符号
|
0100 0001
0101
65
0x41
A
大写字母A
|
0100 0010
0102
66
0x42
B
大写字母B
|
0100 0011
0103
67
0x43
C
大写字母C
|
0100 0100
0104
68
0x44
D
大写字母D
|
0100 0101
0105
69
0x45
E
大写字母E
|
0100 0110
0106
70
0x46
F
大写字母F
|
0100 0111
0107
71
0x47
G
大写字母G
|
0100 1000
0110
72
0x48
H
大写字母H
|
0100 1001
0111
73
0x49
I
大写字母I
|
01001010
0112
74
0x4A
J
大写字母J
|
0100 1011
0113
75
0x4B
K
大写字母K
|
0100 1100
0114
76
0x4C
L
大写字母L
|
0100 1101
0115
77
0x4D
M
大写字母M
|
0100 1110
0116
78
0x4E
N
大写字母N
|
0100 1111
0117
79
0x4F
O
大写字母O
|
0101 0000
0120
80
0x50
P
大写字母P
|
0101 0001
0121
81
0x51
Q
大写字母Q
|
0101 0010
0122
82
0x52
R
大写字母R
|
0101 0011
0123
83
0x53
S
大写字母S
|
0101 0100
0124
84
0x54
T
大写字母T
|
0101 0101
0125
85
0x55
U
大写字母U
|
0101 0110
0126
86
0x56
V
大写字母V
|
0101 0111
0127
87
0x57
W
大写字母W
|
0101 1000
0130
88
0x58
X
大写字母X
|
0101 1001
0131
89
0x59
Y
大写字母Y
|
0101 1010
0132
90
0x5A
Z
大写字母Z
|
0101 1011
0133
91
0x5B
[
开方括号
|
0101 1100
0134
92
0x5C
反斜杠
|
0101 1101
0135
93
0x5D
]
闭方括号
|
0101 1110
0136
94
0x5E
^
脱字符
|
0101 1111
0137
95
0x5F
_
下划线
|
0110 0000
0140
96
0x60
`
开单引号
|
0110 0001
0141
97
0x61
a
小写字母a
|
0110 0010
0142
98
0x62
b
小写字母b
|
0110 0011
0143
99
0x63
c
小写字母c
|
0110 0100
0144
100
0x64
d
小写字母d
|
0110 0101
0145
101
0x65
e
小写字母e
|
0110 0110
0146
102
0x66
f
小写字母f
|
0110 0111
0147
103
0x67
g
小写字母g
|
0110 1000
0150
104
0x68
h
小写字母h
|
0110 1001
0151
105
0x69
i
小写字母i
|
0110 1010
0152
106
0x6A
j
小写字母j
|
0110 1011
0153
107
0x6B
k
小写字母k
|
0110 1100
0154
108
0x6C
l
小写字母l
|
0110 1101
0155
109
0x6D
m
小写字母m
|
0110 1110
0156
110
0x6E
n
小写字母n
|
0110 1111
0157
111
0x6F
o
小写字母o
|
0111 0000
0160
112
0x70
p
小写字母p
|
0111 0001
0161
113
0x71
q
小写字母q
|
0111 0010
0162
114
0x72
r
小写字母r
|
0111 0011
0163
115
0x73
s
小写字母s
|
0111 0100
0164
116
0x74
t
小写字母t
|
0111 0101
0165
117
0x75
u
小写字母u
|
0111 0110
0166
118
0x76
v
小写字母v
|
0111 0111
0167
119
0x77
w
小写字母w
|
0111 1000
0170
120
0x78
x
小写字母x
|
0111 1001
0171
121
0x79
y
小写字母y
|
0111 1010
0172
122
0x7A
z
小写字母z
|
0111 1011
0173
123
0x7B
{
开花括号
|
0111 1100
0174
124
0x7C
|
垂线
|
0111 1101
0175
125
0x7D
}
闭花括号
|
0111 1110
0176
126
0x7E
~
波浪号
|
0111 1111
0177
127
0x7F
DEL (delete)
删除
|
大小规则
常见ASCII码的大小规则:0~9
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 。
问题
在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号 。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0--127表示的符号是一样的,不一样的只是128--255的这一段 。
至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。
扩展
1. 1981年IBM PC ROM256个字符的字符集,即IBM扩展字符集 。
2. 1985年11Windows字符集被称作“ANSI字符集”,遵循了ANSI草案和ISO标准(ANSI/ISO8859-1-1987,简“Latin 1” 。
3. 为了解决中国、日本和韩国的象形文字符和ASCII的某种兼容性,出现了双字节字符集(DBCS:double-byte character set)。DBCS从 第256 代码开始,就像ASCII一样,最初的128个代码是ASCII。然而,较高的128个代码中的某些总是跟随着第二个字节。这两个字节一起(称作首字节和跟随字节)定义一个字符,通常是一个复杂的象形文字 。
GB2312-80 标准
目前的文字编码标准主要有 ASCII、GB2312、GBK、Unicode等。ASCII 编码是最简单的西文编码方案。GB2312、GBK、GB18030 是汉字字符编码方案的国家标准。ISO/IEC 10646 和 Unicode 都是全球字符编码的国际标准。下面对与汉字相关的编码方案GB2312,GBK与GB18030做简要的分析。
GB2312-80 是 1980 年制定的中国汉字编码国家标准。共收录 7445 个字符,其中汉字 6763 个。GB2312 兼容标准 ASCII码,采用扩展 ASCII 码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为 1。具体办法是:收集了 7445 个字符组成 94*94 的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为 01-94,区号和位号组成的代码称为“区位码”。区位输入法就是通过输入区位码实现汉字输入的。将区号和位号分别加上 20H,得到的 4 位十六进制整数称为国标码,编码范围为 0x2121~0x7E7E。为了兼容标准 ASCII 码,给国标码的每个字节加 80H,形成的编码称为机内码,简称内码,是汉字在机器中实际的存储代码GB2312-80 标准的内码范围是 0xA1A1~0xFEFE 。
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)。
GB18030编码标准
国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和GB13000-1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。GB18030-2000编码标准是由信息产业部和国家质量技术监督局在2000年 3月17日联合发布的,并且将作为一项国家标准在2001年的1月正式强制执行。GB18030-2005《信息技术中文编码字符集》是我国制订的以汉字为主并包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集强制性标准,其中收入汉字70000余个 。
相关词条
相关搜索
其它词条