産生原因
在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平分别表示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餘個 。
相關詞條
相關搜索
其它詞條