產生
在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂,那么大家就必須使用相同的編碼規則,於是美國有關的標準化組織就出台了ASCII編碼,統一規定了上述常用符號用哪些二進制數來表示。美國標準信息交換代碼是由美國國家標準學會(AmericanNationalStandardInstitute,ANSI)制定的,標準的單位元組字元編碼方案,用於基於文本的數據。起始於50年代後期,在1967年定案。它最初是美國國家標準,供不同計算機在相互通信時用作共同遵守的西文字元編碼標準,它已被國際標準化組織(InternationalOrganizationforStandardization,ISO)定為國際標準,稱為ISO646標準。適用於所有拉丁文字字母。
字元表
非列印字元表
ASCII 表上的數字 0–31 分配給了控制字元,用於控制像印表機等一些 外圍設備。例如,12 代表換頁/新頁功能。此命令指示印表機跳到下一頁的開頭十進制 | 十六進制 | 字元 | 十進制 | 十六進制 | 字元 | |
0 | 00 | 空 | 16 | 10 | 數據鏈路轉意 | |
1 | 01 | 頭標開始 | 17 | 11 | 設備控制 1 | |
2 | 02 | 正文開始 | 18 | 12 | 設備控制 2 | |
3 | 03 | 正文結束 | 19 | 13 | 設備控制 3 | |
4 | 04 | 傳輸結束 | 20 | 14 | 設備控制 4 | |
5 | 05 | 查詢 | 21 | 15 | 反確認 | |
6 | 06 | 確認 | 22 | 16 | 同步空閒 | |
7 | 07 | 震鈴 | 23 | 17 | 傳輸塊結束 | |
8 | 08 | backspace | 24 | 18 | 取消 | |
9 | 09 | 水平制表符 | 25 | 19 | 媒體結束 | |
10 | 0A | 換行/新行 | 26 | 1A | 替換 | |
11 | 0B | 豎直制表符 | 27 | 1B | 轉意 | |
12 | 0C | 換頁/新頁 | 28 | 1C | 檔案分隔設定 | |
13 | 0D | 回車 | 29 | 1D | 組分隔設定 | |
14 | 0E | 移出 | 30 | 1E | 記錄分隔設定 | |
15 | 0F | 移入 | 31 | 1F | 單元分隔設定 |
列印字元
數字 32–126 分配給了能在鍵盤上找到的字元,當您查看或列印文檔時就會出現。數字 127 代表 DELETE 命令。ASCII 列印字元表
十進制 | 十六進制 | 字元 | 十進制 | 十六進制 | 字元 | |
32 | 20 | space | 80 | 50 | P | |
33 | 21 | ! | 81 | 51 | Q | |
34 | 22 | " | 82 | 52 | R | |
35 | 23 | # | 83 | 53 | S | |
36 | 24 | $ | 84 | 54 | T | |
37 | 25 | % | 85 | 55 | U | |
38 | 26 | & | 86 | 56 | V | |
39 | 27 | ' | 87 | 57 | w | |
40 | 28 | ( | 88 | 58 | X | |
41 | 29 | ) | 89 | 59 | Y | |
42 | 2A | * | 90 | 5A | Z | |
43 | 2B | + | 91 | 5B | [ | |
44 | 2C | , | 92 | 5C | \ | |
45 | 2D | - | 93 | 5D | ] | |
46 | 2E | . | 94 | 5E | ^ | |
47 | 2F | / | 95 | 5F | _ | |
48 | 30 | 0 | 96 | 60 | ` | |
49 | 31 | 1 | 97 | 61 | a | |
50 | 32 | 2 | 98 | 62 | b | |
51 | 33 | 3 | 99 | 63 | c | |
52 | 34 | 4 | 100 | 64 | d | |
53 | 35 | 5 | 101 | 65 | e | |
54 | 36 | 6 | 102 | 66 | f | |
55 | 37 | 7 | 103 | 67 | g | |
56 | 38 | 8 | 104 | 68 | h | |
57 | 39 | 9 | 105 | 69 | i | |
58 | 3A | : | 106 | 6A | j | |
59 | 3B | ; | 107 | 6B | k | |
60 | 3C | < | 108 | 6C | l | |
61 | 3D | = | 109 | 6D | m | |
62 | 3E | > | 110 | 6E | n | |
63 | 3F | ? | 111 | 6F | o | |
64 | 40 | @ | 112 | 70 | p | |
65 | 41 | A | 113 | 71 | q | |
66 | 42 | B | 114 | 72 | r | |
67 | 43 | C | 115 | 73 | s | |
68 | 44 | D | 116 | 74 | t | |
69 | 45 | E | 117 | 75 | u | |
70 | 46 | F | 118 | 76 | v | |
71 | 47 | G | 119 | 77 | w | |
72 | 48 | H | 120 | 78 | x | |
73 | 49 | I | 121 | 79 | y | |
74 | 4A | J | 122 | 7A | z | |
75 | 4B | K | 123 | 7B | { | |
76 | 4C | L | 124 | 7C | | | |
77 | 4D | M | 125 | 7D | } | |
78 | 4E | N | 126 | 7E | ~ | |
79 | 4F | O | 127 | 7F | DEL |
擴展列印字元
擴展的 ASCII 字元滿足了對更多字元的需求。擴展的 ASCII 包含 ASCII 中已有的 128 個字元(數字 0–32 顯示在下圖中),又增加了 128 個字元,總共是 256 個。即使有了這些更多的字元,許多語言還是包含無法壓縮到 256 個字元中的符號。因此,出現了一些 ASCII 的變體來囊括地區性字元和符號。例如,許多 軟體程式把 ASCII 表(又稱作 ISO 8859-1)用於北美、 西歐、澳大利亞和 非洲的語言。擴展的ASCII 列印字元表
十進制 | 十六進制 | 字元 | 十進制 | 十六進制 | 字元 | |
128 | 80 | Ç | 192 | C0 | └ | |
129 | 81 | ü | 193 | C1 | ┴ | |
130 | 82 | é | 194 | C2 | ┬ | |
131 | 83 | â | 195 | C3 | ├ | |
132 | 84 | ä | 196 | C4 | ─ | |
133 | 85 | à | 197 | C5 | ┼ | |
134 | 86 | å | 198 | C6 | ╞ | |
135 | 87 | ç | 199 | C7 | ╟ | |
136 | 88 | ê | 200 | C8 | ╚ | |
137 | 89 | ë | 201 | C9 | ╔ | |
138 | 8A | è | 202 | CA | ╩ | |
139 | 8B | ï | 203 | CB | ╦ | |
140 | 8C | î | 204 | CC | ╠ | |
141 | 8D | ì | 205 | CD | ═ | |
142 | 8E | Ä | 206 | CE | ╬ | |
143 | 8F | Å | 207 | CF | ╧ | |
144 | 90 | É | 208 | D0 | ╨ | |
145 | 91 | æ | 209 | D1 | ╤ | |
146 | 92 | Æ | 210 | D2 | ╥ | |
147 | 93 | ô | 211 | D3 | ╙ | |
148 | 94 | ö | 212 | D4 | Ô | |
149 | 95 | ò | 213 | D5 | ╒ | |
150 | 96 | û | 214 | D6 | ╓ | |
151 | 97 | ù | 215 | D7 | ╫ | |
152 | 98 | ÿ | 216 | D8 | ╪ | |
153 | 99 | Ö | 217 | D9 | ┘ | |
154 | 9A | Ü | 218 | DA | ┌ | |
155 | 9B | ¢ | 219 | DB | █ | |
156 | 9C | £ | 220 | DC | ▄ | |
157 | 9D | ¥ | 221 | DD | ▌ | |
158 | 9E | ₧ | 222 | DE | ▐ | |
159 | 9F | ƒ | 223 | DF | ▀ | |
160 | A0 | á | 224 | E0 | α | |
161 | A1 | í | 225 | E1 | ß | |
162 | A2 | ó | 226 | E2 | Γ | |
163 | A3 | ú | 227 | E3 | π | |
164 | A4 | ñ | 228 | E4 | Σ | |
165 | A5 | Ñ | 229 | E5 | σ | |
166 | A6 | ª | 230 | E6 | µ | |
167 | A7 | º | 231 | E7 | τ | |
168 | A8 | ¿ | 232 | E8 | Φ | |
169 | A9 | ⌐ | 233 | E9 | Θ | |
170 | AA | ¬ | 234 | EA | Ω | |
171 | AB | ½ | 235 | EB | δ | |
172 | AC | ¼ | 236 | EC | ∞ | |
173 | AD | ¡ | 237 | ED | φ | |
174 | AE | « | 238 | EE | ε | |
175 | AF | » | 239 | EF | ∩ | |
176 | B0 | ░ | 240 | F0 | ≡ | |
177 | B1 | ▒ | 241 | F1 | ± | |
178 | B2 | ▓ | 242 | F2 | ≥ | |
179 | B3 | │ | 243 | F3 | ≤ | |
180 | B4 | ┤ | 244 | F4 | ⌠ | |
181 | B5 | ╡ | 245 | F5 | ⌡ | |
182 | B6 | ╢ | 246 | F6 | ÷ | |
183 | B7 | ╖ | 247 | F7 | ≈ | |
184 | B8 | ╕ | 248 | F8 | ≈ | |
185 | B9 | ╣ | 249 | F9 | ∙ | |
186 | BA | ║ | 250 | FA | · | |
187 | BB | ╗ | 251 | FB | √ | |
188 | BC | ╝ | 252 | FC | ⁿ | |
189 | BD | ╜ | 253 | FD | ² | |
190 | BE | ╛ | 254 | FE | ■ | |
191 | BF | ┐ | 255 | FF | ÿ |
國際問題
ASCII是美國標準,所以它不能良好滿足其它講英語國家的需要。例如英國的英鎊符號(£)在哪裡?
拉丁語字母表重音符號
使用斯拉夫字母表的希臘語、希伯來語、阿拉伯語和俄語。
漢字系統的中國象形漢字,日本和朝鮮。
1967年,國際標準化組織(ISO:InternationalStandardsOrganization)推薦一個ASCII的變種,代碼0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D“為國家使用保留”,而代碼0x5E、0x60和0x7E標為“當國內要求的特殊字元需要8、9或10個空間位置時,可用於其它圖形符號”。這顯然不是一個最佳的國際解決方案,因為這並不能保證一致性。但這卻顯示了人們如何想盡辦法為不同的語言來編碼的。
虛擬ASCII值
ESC鍵VK_ESCAPE(27)
回車鍵:VK_RETURN(13)
TAB鍵:VK_TAB(9)
Caps Lock鍵:VK_CAPITAL(20)
Shift鍵:VK_SHIFT(16)
Ctrl鍵:VK_CONTROL(17)
Alt鍵:VK_MENU(18)
空格鍵:VK_SPACE(32)
退格鍵:VK_BACK(8)
左徽標鍵:VK_LWIN(91)
右徽標鍵:VK_RWIN(92)
滑鼠右鍵快捷鍵:VK_APPS(93)
Insert鍵:VK_INSERT(45)
Home鍵:VK_HOME(36)
PageUp:VK_PRIOR(33)
PageDown:VK_NEXT(34)
End鍵:VK_END(35)
Delete鍵:VK_DELETE(46)
方向鍵(←):VK_LEFT(37)
方向鍵(↑):VK_UP(38)
方向鍵(→):VK_RIGHT(39)
方向鍵(↓):VK_DOWN(40)
F1鍵:VK_F1(112)
F2鍵:VK_F2(113)
F3鍵:VK_F3(114)
F4鍵:VK_F4(115)
F5鍵:VK_F5(116)
F6鍵:VK_F6(117)
F7鍵:VK_F7(118)
F8鍵:VK_F8(119)
F9鍵:VK_F9(120)
F10鍵:VK_F10(121)
F11鍵:VK_F11(122)
F12鍵:VK_F12(123)
NumLock鍵:VK_NUMLOCK(144)
小鍵盤0:VK_NUMPAD0(96)
小鍵盤1:VK_NUMPAD1(97)
小鍵盤2:VK_NUMPAD2(98)
小鍵盤3:VK_NUMPAD3(99)
小鍵盤4:VK_NUMPAD4(100)
小鍵盤5:VK_NUMPAD5(101)
小鍵盤6:VK_NUMPAD6(102)
小鍵盤7:VK_NUMPAD7(103)
小鍵盤8:VK_NUMPAD8(104)
小鍵盤9:VK_NUMPAD9(105)
小鍵盤。:VK_DECIMAL(110)
小鍵盤*:VK_MULTIPLY(106)
小鍵盤+:VK_ADD(107)
小鍵盤-:VK_SUBTRACT(109)
小鍵盤/:VK_DIVIDE(111)
PauseBreak鍵:VK_PAUSE(19)
ScrollLock鍵:VK_SCROLL(145)
編程相關
Pascal取得ASCII碼:Ord(ch)
得到對應字元:Chr(n)
取得ASCII碼:Asc(ch)
得到對應字元:Chr(n)
PCLOGO編程
取得ASCII碼:asc"(某個字元,如大寫的A)(輸出答案:65)
漢字編碼
0-127是7位ASCII碼的範圍,是國際標準。
至於漢字,不同的字元集用的ascii碼的範圍也不一樣,常用的漢字字元集有GB2312-80,GBK,
Big5,unicode等。下面我重點說一說最常用的GB_2312的字元集。
GB_2312字元集是目前最常用的漢字編碼標準,windows
95/98/2000中使用的GBK字元集就包含了GB2312,或者說和GB2312兼容,GB_2312字元集包含了6763個的
簡體漢字,和682個標準中文符號。在這個標準中,每個漢字用2個位元組來表示,每個位元組的ascii碼為161-254(16進制A1-
FE),第一個位元組對應於區碼的1-94區,第二個位元組對應於位碼的1-94位。
161-254其實很好記憶,大家知道英文字元中,可列印的字元範圍為33-126。將這對數加上
128(或者說最高位置1),就得到漢字使用的字元的範圍。
//GB18030的規範是漢字第一個位元組在0x81-0xFE之間,第二個位元組位於區間0x40-0x7E以及0x80-0xFE。每個位元組轉化為整數大於128。
if((char_temp>=0x81)&&(char_temp<=0xFE))
{
if(*len<nlen)
{
*len+=1;
*p_temp++=char_temp;
_putch(char_temp);
x++;
}
}
}