產生
在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂,那么大家就必須使用相同的編碼規則,於是美國有關的標準化組織就出台了ASCII編碼,統一規定了上述常用符號用哪些二進制數來表示。美國標準信息交換代碼是由美國國家標準學會(AmericanNationalStandardInstitute,ANSI)制定的,標準的單位元組字元編碼方案,用於基於文本的數據。起始於50年代後期,在1967年定案。它最初是美國國家標準,供不同計算機在相互通信時用作共同遵守的西文字元編碼標準,它已被國際標準化組織(InternationalOrganizationforStandardization,ISO)定為國際標準,稱為ISO646標準。適用於所有拉丁文字字母。
表述方式
ASCII碼使用指定的7位或8位二進
制數組合來表示128或256種可能的字元。標準ASCII碼也叫基礎ASCII碼,使用7位二進制數來表示所有的大寫和小寫字母,數字0到9、標點符號,以及在美式英語中使用的特殊控制字元。其中: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個特殊符號字元、外來語字母和圖形符號。
標準I表
in | Dec | Hex | 縮寫/字元 | 解釋 | |
0000 0000 | 0 | 00 | NUL(null) | 空字元 | |
0000 0001 | 1 | 01 | SOH(start of headline) | 標題開始 | |
0000 0010 | 2 | 02 | STX (start of text) | 正文開始 | |
0000 0011 | 3 | 03 | ETX (end of text) | 正文結束 | |
0000 0100 | 4 | 04 | EOT (end of transmission) | 傳輸結束 | |
0000 0101 | 5 | 05 | ENQ (enquiry) | 請求 | |
0000 0110 | 6 | 06 | ACK (acknowledge) | 收到通知 | |
0000 0111 | 7 | 07 | BEL (bell) | 響鈴 | |
0000 1000 | 8 | 08 | BS (backspace) | 退格 | |
0000 1001 | 9 | 09 | HT (horizontal tab) | 水平制表符 | |
0000 1010 | 10 | 0A | LF (NL line feed, new line) | 換行鍵 | |
0000 1011 | 11 | 0B | VT (vertical tab) | 垂直制表符 | |
0000 1100 | 12 | 0C | FF (NP form feed, new page) | 換頁鍵 | |
0000 1101 | 13 | 0D | CR (carriage return) | 回車鍵 | |
0000 1110 | 14 | 0E | SO (shift out) | 不用切換 | |
0000 1111 | 15 | 0F | SI (shift in) | 啟用切換 | |
0001 0000 | 16 | 10 | DLE (data link escape) | 數據鏈路轉義 | |
0001 0001 | 17 | 11 | DC1 (device control 1) | 設備控制1 | |
0001 0010 | 18 | 12 | DC2 (device control 2) | 設備控制2 | |
0001 0011 | 19 | 13 | DC3 (device control 3) | 設備控制3 | |
0001 0100 | 20 | 14 | DC4 (device control 4) | 設備控制4 | |
0001 0101 | 21 | 15 | NAK (negative acknowledge) | 拒絕接收 | |
0001 0110 | 22 | 16 | SYN (synchronous idle) | 同步空閒 | |
0001 0111 | 23 | 17 | ETB (end of trans. block) | 傳輸塊結束 | |
0001 1000 | 24 | 18 | CAN (cancel) | 取消 | |
0001 1001 | 25 | 19 | EM (end of medium) | 介質中斷 | |
0001 1010 | 26 | 1A | SUB (substitute) | 替補 | |
0001 1011 | 27 | 1B | ESC (escape) | 換碼(溢出) | |
0001 1100 | 28 | 1C | FS (file separator) | 檔案分割符 | |
0001 1101 | 29 | 1D | GS (group separator) | 分組符 | |
0001 1110 | 30 | 1E | RS (record separator) | 記錄分離符 | |
0001 1111 | 31 | 1F | US (unit separator) | 單元分隔設定 | |
0010 0000 | 32 | 20 | (space) | 空格 | |
0010 0001 | 33 | 21 | ! | ||
0010 0010 | 34 | 22 | " | ||
0010 0011 | 35 | 23 | # | ||
0010 0100 | 36 | 24 | $ | ||
0010 0101 | 37 | 25 | % | ||
0010 0110 | 38 | 26 | & | ||
0010 0111 | 39 | 27 | ' | ||
0010 1000 | 40 | 28 | ( | ||
0010 1001 | 41 | 29 | ) | ||
0010 1010 | 42 | 2A | * | ||
0010 1011 | 43 | 2B | + | ||
0010 1100 | 44 | 2C | , | ||
0010 1101 | 45 | 2D | - | ||
0010 1110 | 46 | 2E | . | ||
00101111 | 47 | 2F | / | ||
00110000 | 48 | 30 | 0 | ||
00110001 | 49 | 31 | 1 | ||
00110010 | 50 | 32 | 2 | ||
00110011 | 51 | 33 | 3 | ||
00110100 | 52 | 34 | 4 | ||
00110101 | 53 | 35 | 5 | ||
00110110 | 54 | 36 | 6 | ||
00110111 | 55 | 37 | 7 | ||
00111000 | 56 | 38 | 8 | ||
00111001 | 57 | 39 | 9 | ||
00111010 | 58 | 3A | : | ||
00111011 | 59 | 3B | ; | ||
00111100 | 60 | 3C | < | ||
00111101 | 61 | 3D | = | ||
00111110 | 62 | 3E | > | ||
00111111 | 63 | 3F | ? | ||
01000000 | 64 | 40 | @ | ||
01000001 | 65 | 41 | A | ||
01000010 | 66 | 42 | B | ||
01000011 | 67 | 43 | C | ||
01000100 | 68 | 44 | D | ||
01000101 | 69 | 45 | E | ||
01000110 | 70 | 46 | F | ||
01000111 | 71 | 47 | G | ||
01001000 | 72 | 48 | H | ||
01001001 | 73 | 49 | I | ||
01001010 | 74 | 4A | J | ||
01001011 | 75 | 4B | K | ||
01001100 | 76 | 4C | L | ||
01001101 | 77 | 4D | M | ||
01001110 | 78 | 4E | N | ||
01001111 | 79 | 4F | O | ||
01010000 | 80 | 50 | P | ||
01010001 | 81 | 51 | Q | ||
01010010 | 82 | 52 | R | ||
01010011 | 83 | 53 | S | ||
01010100 | 84 | 54 | T | ||
01010101 | 85 | 55 | U | ||
01010110 | 86 | 56 | V | ||
01010111 | 87 | 57 | W | ||
01011000 | 88 | 58 | X | ||
01011001 | 89 | 59 | Y | ||
01011010 | 90 | 5A | Z | ||
01011011 | 91 | 5B | [ | ||
01011100 | 92 | 5C | \ | ||
01011101 | 93 | 5D | ] | ||
01011110 | 94 | 5E | ^ | ||
01011111 | 95 | 5F | _ | ||
01100000 | 96 | 60 | ` | ||
01100001 | 97 | 61 | a | ||
01100010 | 98 | 62 | b | ||
01100011 | 99 | 63 | c | ||
01100100 | 100 | 64 | d | ||
01100101 | 101 | 65 | e | ||
01100110 | 102 | 66 | f | ||
01100111 | 103 | 67 | g | ||
01101000 | 104 | 68 | h | ||
01101001 | 105 | 69 | i | ||
01101010 | 106 | 6A | j | ||
01101011 | 107 | 6B | k | ||
01101100 | 108 | 6C | l | ||
01101101 | 109 | 6D | m | ||
01101110 | 110 | 6E | n | ||
01101111 | 111 | 6F | o | ||
01110000 | 112 | 70 | p | ||
01110001 | 113 | 71 | q | ||
01110010 | 114 | 72 | r | ||
01110011 | 115 | 73 | s | ||
01110100 | 116 | 74 | t | ||
01110101 | 117 | 75 | u | ||
01110110 | 118 | 76 | v | ||
01110111 | 119 | 77 | w | ||
01111000 | 120 | 78 | x | ||
01111001 | 121 | 79 | y | ||
01111010 | 122 | 7A | z | ||
01111011 | 123 | 7B | { | ||
01111100 | 124 | 7C | | | ||
01111101 | 125 | 7D | } | ||
01111110 | 126 | 7E | ~ | ||
01111111 | 127 | 7F | DEL(delete) | 刪除 |
八進制 | 十六進制 | 十進制 | 字元 | 八進制 | 十六進制 | 十進制 | 字元 |
0 | 0 | 0 | nul | 100 | 40 | 64 | @ |
1 | 1 | 1 | soh | 101 | 41 | 65 | A |
2 | 2 | 2 | stx | 102 | 42 | 66 | B |
3 | 3 | 3 | etx | 103 | 43 | 67 | C |
4 | 4 | 4 | eot | 104 | 44 | 68 | D |
5 | 5 | 5 | enq | 105 | 45 | 69 | E |
6 | 6 | 6 | ack | 106 | 46 | 70 | F |
7 | 7 | 7 | bel | 107 | 47 | 71 | G |
10 | 8 | 8 | bs | 110 | 48 | 72 | H |
11 | 9 | 9 | ht | 111 | 49 | 73 | I |
12 | 0a | 10 | nl | 112 | 4a | 74 | J |
13 | 0b | 11 | vt | 113 | 4b | 75 | K |
14 | 0c | 12 | ff | 114 | 4c | 76 | L |
15 | 0d | 13 | cr | 115 | 4d | 77 | M |
16 | 0e | 14 | so | 116 | 4e | 78 | N |
17 | 0f | 15 | si | 117 | 4f | 79 | O |
20 | 10 | 16 | dle | 120 | 50 | 80 | P |
21 | 11 | 17 | dc1 | 121 | 51 | 81 | Q |
22 | 12 | 18 | dc2 | 122 | 52 | 82 | R |
23 | 13 | 19 | dc3 | 123 | 53 | 83 | S |
24 | 14 | 20 | dc4 | 124 | 54 | 84 | T |
25 | 15 | 21 | nak | 125 | 55 | 85 | U |
26 | 16 | 22 | syn | 126 | 56 | 86 | V |
27 | 17 | 23 | etb | 127 | 57 | 87 | W |
30 | 18 | 24 | can | 130 | 58 | 88 | X |
31 | 19 | 25 | em | 131 | 59 | 89 | Y |
32 | 1a | 26 | sub | 132 | 5a | 90 | Z |
33 | 1b | 27 | esc | 133 | 5b | 91 | [ |
34 | 1c | 28 | fs | 134 | 5c | 92 | \ |
35 | 1d | 29 | gs | 135 | 5d | 93 | ] |
36 | 1e | 30 | re | 136 | 5e | 94 | ^ |
37 | 1f | 31 | us | 137 | 5f | 95 | _ |
40 | 20 | 32 | sp | 140 | 60 | 96 | ' |
41 | 21 | 33 | ! | 141 | 61 | 97 | a |
42 | 22 | 34 | " | 142 | 62 | 98 | b |
43 | 23 | 35 | # | 143 | 63 | 99 | c |
44 | 24 | 36 | $ | 144 | 64 | 100 | d |
45 | 25 | 37 | % | 145 | 65 | 101 | e |
46 | 26 | 38 | & | 146 | 66 | 102 | f |
47 | 27 | 39 | ` | 147 | 67 | 103 | g |
50 | 28 | 40 | ( | 150 | 68 | 104 | h |
51 | 29 | 41 | ) | 151 | 69 | 105 | i |
52 | 2a | 42 | * | 152 | 6a | 106 | j |
53 | 2b | 43 | + | 153 | 6b | 107 | k |
54 | 2c | 44 | , | 154 | 6c | 108 | l |
55 | 2d | 45 | - | 155 | 6d | 109 | m |
56 | 2e | 46 | . | 156 | 6e | 110 | n |
57 | 2f | 47 | / | 157 | 6f | 111 | o |
60 | 30 | 48 | 0 | 160 | 70 | 112 | p |
61 | 31 | 49 | 1 | 161 | 71 | 113 | q |
62 | 32 | 50 | 2 | 162 | 72 | 114 | r |
63 | 33 | 51 | 3 | 163 | 73 | 115 | s |
64 | 34 | 52 | 4 | 164 | 74 | 116 | t |
65 | 35 | 53 | 5 | 165 | 75 | 117 | u |
66 | 36 | 54 | 6 | 166 | 76 | 118 | v |
67 | 37 | 55 | 7 | 167 | 77 | 119 | w |
70 | 38 | 56 | 8 | 170 | 78 | 120 | x |
71 | 39 | 57 | 9 | 171 | 79 | 121 | y |
72 | 3a | 58 | : | 172 | 7a | 122 | z |
73 | 3b | 59 | ; | 173 | 7b | 123 | { |
74 | 3c | 60 | < | 174 | 7c | 124 | | |
75 | 3d | 61 | = | 175 | 7d | 125 | } |
76 | 3e | 62 | > | 176 | 7e | 126 | ~ |
77 | 3f | 63 | ? | 177 | 7f | 127 | del |
大小規則
1)數字0~9比字母要小。如"7"<"F";
2)數字0比數字9要小,並按0到9順序遞增。如"3"<"8"
3)字母A比字母Z要小,並按A到Z順序遞增。如"A"<"Z"
4)同個字母的大寫字母比小寫字母要小。如"A"<"a"。
記住幾個常見字母的ASCII碼大小:
“換行LF”為0x0A;“回車CR”為0x0D;空格為0x20;"0"為0x30;"A"為0x41;"a"為0x61。
另外還有128-255的ASCII字元。
查詢ASCII技巧,方便查詢ASCII碼對應的字元:新建一個文本文檔,按住ALT+要查詢的碼值(注意,這裡是十進制),鬆開即可顯示出對應字元。例如:按住ALT+97,則會顯示出'a'。
國際問題
ASCII是美國標準,所以它不能良好滿足其它講英語國家的需要。例如英國的英鎊符號(£)在哪裡?拉丁語字母表重音符號
使用斯拉夫字母表的希臘語、希伯來語、阿拉伯語和俄語。
漢字系統的中國象形漢字,日本和朝鮮。
1967年,國際標準化組織(ISO:InternationalStandardsOrganization)推薦一個ASCII的變種,
代碼0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D“為國家使用保留”,而代碼0x5E、0x60和0x7E標為
“當國內要求的特殊字元需要8、9或10個空間位置時,可用於其它圖形符號”。這顯然不是一個最佳的國際解決方案,
因為這並不能保證一致性。但這卻顯示了人們如何想盡辦法為不同的語言來編碼的。
擴展ASCII
1981年IBMPCROM256個字元的字元集,即IBM擴展字元集
1985年11Windows字元集被稱作“ANSI字元集”,遵循了ANSI草案和ISO標準(ANSI/ISO8859-1-1987,簡“Latin1”。ANSI字元集的最初版本:
1987年4月代碼頁437,字元的映像代碼,出現在MS-DOS3.3
擴展ASCII字元是從128到255(0x80-0xff)的字元。
擴展ASCII不再是國際標準。
列印字元
擴展的ASCII字元滿足了對更多字元的需求。擴展的ASCII包含ASCII中已有的128個字元(數字0–32顯示在下圖中),又增加了128個字元,總共是256個。即使有了這些更多的字元,許多語言還是包含無法壓縮到256個字元中的符號。因此,出現了一些ASCII的變體來囊括地區性字元和符號。例如,許多軟體程式把ASCII表(又稱作ISO8859-1)用於北美、西歐、澳大利亞和非洲的語言。
雙位元組
雙位元組字元集(DBCS:double-bytecharacterset),解決中國、日本和韓國的象形文字元和ASCII的某種兼容性。
DBCS從256代碼開始,就像ASCII一樣。與任何行為良好的代碼頁一樣,最初的128個代碼是ASCII。
然而,較高的128個代碼中的某些總是跟隨著第二個位元組。
這兩個位元組一起(稱作首位元組和跟隨位元組)定義一個字元,通常是一個複雜的象形文字。
虛擬ASCII值
ESC鍵VK_ESCAPE(27)
回車鍵:VK_RETURN(13)
TAB鍵:VK_TAB(9)
CapsLock鍵: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)
VisualBasic
取得ASCII碼:Asc(ch)
得到對應字元:Chr(n)
PCLOGO編程
取得ASCII碼:asc"(某個字元,如大寫的A)(輸出答案:65)。
漢字編碼
至於漢字,不同的字元集用的ascii碼的範圍也不一樣,常用的漢字字元集有GB2312-80,GBK,
Big5,unicode等。下面我重點說一說最常用的GB_2312的字元集。
GB_2312字元集是目前最常用的漢字編碼標準,windows95/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++;
}
}
}。
非列印控制字元
ASCII 表上的數字 0–31 分配給了控制字元,用於控制像印表機等一些外圍設備。例如,12 代表換頁/新頁功能。此命令指示印表機跳到下一頁的開頭。
碼錶圖
(0-127不包含擴展部分)
國際問題
ASCII是美國標準,所以它不能良好滿足其它講英語國家的需要。例如英國的英鎊符號(£)在哪裡?
拉丁語字母表重音符號。
使用斯拉夫字母表的希臘語、希伯來語、阿拉伯語和俄語。
漢字系統的中國象形漢字,日本和朝鮮。
1967年,國際標準化組織(ISO:InternationalStandardsOrganization)推薦一個ASCII的變種,
代碼0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D“為國家使用保留”,而代碼0x5E、0x60和0x7E標為
“當國內要求的特殊字元需要8、9或10個空間位置時,可用於其它圖形符號”。這顯然不是一個最佳的國際解決方案。
因為這並不能保證一致性。但這卻顯示了人們如何想盡辦法為不同的語言來編碼的。