1、美国标准信息交换标准码( American Standard Code for Information Interchange, ASCII )在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机比较傻,只有 0 和 1 两位数的二进制比较适合于它使用),同样的,象 a、b、c、d 这样的 52 个字母(包括大写)、以及 0、1、2 等数字还有一些常用的符号(例如*、#、等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化
2、组织就出台了所谓的 ASCII 编码,统一规定了上述常用符号用哪个二进制数来表示。美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50 年代后期,在 1967 年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(International Organization for Standardization, ISO)定为国际标准,称为 ISO 646 标准。适用于所有拉丁文字字母。ASCII 码使用
3、指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础 ASCII 码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:032 及 127(共34 个)是控制字符或通讯专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII 值为 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不
4、同的应用程序,而对文本显示有不同的影响。33126(共 94 个)是字符,其中 4857 为 0 到 9 十个阿拉伯数字;6590 为 26 个大写英文字母,97122 号为 26 个小写英文字母,其余为一些标点符号、运算符号等。同时还要注意,在标准 ASCII 中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位b7 添 1;偶校验规定:正确的代码一个字节中 1 的个数必须是偶数,若非偶数,则在最高位 b7 添 1。后 128 个称为扩展 A
5、SCII 码,目前许多基于 x86 的系统都支持使用扩展(或“高”)ASCII。扩展 ASCII 码允许将每个字符的第 8 位用于确定附加的 128 个特殊符号字符、外来语字母和图形符号。以下为标准 ASCII 表:Bin Dec Hex 缩写/字符 解释0000 0000 0 00 NUL 空字符0000 0001 1 01 SOH (start of handing) 标题开始 0000 0010 2 02 STX (start of text) 正文开始0000 0011 3 03 ETX (end of text) 正文结束0000 0100 4 04 EOT(end of trans
6、mission) 传输结束 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
7、, 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 control2) 设备控制 20001 0011 19 13 DC3 (device control3) 设备
8、控制 30001 0100 20 14 DC4 (device control4) 设备控制 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 1
9、011 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 空格0010 0001 33 21 !0010 0010 34 22 “ 0010 0011 35 23 # 0010 0100 36 24 $ 0010 0101 37 25 %
10、 0010 0110 38 26 0011 1100 60 3C 0011 1111 63 3F ? 0100 0000 64 40 0100 0001 65 41 A 0100 0010 66 42 B 0100 0011 67 43 C 0100 0100 68 44 D 0100 0101 69 45 E 0100 0110 70 46 F 0100 0111 71 47 G 0100 1000 72 48 H 0100 1001 73 49 I 0100 1010 74 4A J 0100 1011 75 4B K 0100 1100 76 4C L 0100 1101 77 4D M
11、 0100 1110 78 4E N 0100 1111 79 4F O 0101 0000 80 50 P 0101 0001 81 51 Q 0101 0010 82 52 R 0101 0011 83 53 S 0101 0100 84 54 T 0101 0101 85 55 U 0101 0110 86 56 V 0101 0111 87 57 W 0101 1000 88 58 X 0101 1001 89 59 Y0101 1010 90 5A Z 0101 1011 91 5B 0101 1100 92 5C 0101 1101 93 5D 0101 1110 94 5E 01
12、01 1111 95 5F _ 0110 0000 96 60 0110 0001 97 61 a 0110 0010 98 62 b 0110 0011 99 63 c 0110 0100 100 64 d 0110 0101 101 65 e 0110 0110 102 66 f 0110 0111 103 67 g Bin Dec Hex 缩写/字符 解释0110 1000 104 68 h 0110 1001 105 69 i 0110 1010 106 6A j 0110 1011 107 6B k 0110 1100 108 6C l 0110 1101 109 6D m 0110
13、 1110 110 6E n 0110 1111 111 6F o 0111 0000 112 70 p 0111 0001 113 71 q 0111 0010 114 72 r 0111 0011 115 73 s 0111 0100 116 74 t 0111 0101 117 75 u 0111 0110 118 76 v 0111 0111 119 77 w 0111 1000 120 78 x 0111 1001 121 79 y 0111 1010 122 7A z 0111 1011 123 7B 0111 1100 124 7C | 0111 1101 125 7D 0111
14、 1110 126 7E 0111 1111 127 7F DEL (delete) 删除 另外还有 128-255 的 ASCII 字符字符集简史:6000 年前 象形文字3000 年前 字母表1838 年到 1854 年 Samuel F. B. Morse 发明了电报,字母表中的每个字符对应于一系列短的和长的脉冲1821 年到 1824 年 Louis Braille 发明盲文,6 位代码,它把字符、常用字母组合、常用单字和标点进行编码。一个特殊的 escape 代码表示后续的字符代码应解释为大写。一个特殊的 shift 代码允许后续代码被解释为数字。1931 年 CCITT 标准化 T
15、elex 代码,包括 Baudot #2 的代码,都是包括字符和数字的 5位代码。1890 年早期计算机的字符码是从 Hollerith 卡片,6 位字符码系统 BCDIC(Binary-Coded Decimal Interchange Code:二进制编码十进制交换编码),60 年代扩展为 8 位EBCDIC,IBM 大型主机的标准;1967 年 美国信息交换标准码(ASCII:American Standard Code for Information Interchange),在字符长度是 6 位、7 位还是 8 位的问题上产生了很大的争议。从可靠性的观点来看不应使用替换字符,因此 A
16、SCII 不能是 6 位编码,但由于费用的原因也排除了8 位版本的方案(当时每位的储存空间成本仍很昂贵)。这样,最终的字符码就有 26 个小写字母、26 个大写字母、10 个数字、32 个符号、33 个句柄和一个空格,总共 128 个字符码。ASCII 现在记录在 ANSI X3.4-1986 字符集用于信息交换的 7 位美国国家标准码(7-Bit ASCII:7-Bit American National Standard Code for Information Interchange),由美国国家标准协会(American National Standards Institute)发布。
17、ASCII 国际问题:ASCII 是美国标准,所以它不能良好满足其它讲英语国家的需要。例如英国的英镑符号()在哪里?拉丁语字母表重音符号,使用斯拉夫字母表的希腊语、希伯来语、阿拉伯语和俄语。汉字系统的中国象形汉字,日本和朝鲜。1967 年,国际标准化组织(ISO:International Standards Organization)推荐一个 ASCII 的变种,代码 0x40、0x5B、0x5C、0x5D、0x7B、0x7C 和 0x7D“为国家使用保留”,而代码 0x5E、0x60 和 0x7E 标为“当国内要求的特殊字符需要 8、9 或 10 个空间位置时,可用于其它图形符号”。这显然
18、不是一个最佳的国际解决方案,因为这并不能保证一致性。但这却显示了人们如何想尽办法为不同的语言来编码的。扩展 ASCII:1981 年 IBM PC ROM256 个字符的字符集,即 IBM 扩展字符集。1985 年 11 Windows 字符集被称作“ANSI 字符集”,遵循了 ANSI 草案和 ISO 标准(ANSI/ISO 8859-1-1987,简“Latin 1”。ANSI 字符集的最初版本:1987 年 4 月代码页437,字符的映像代码,出现在 MS-DOS 3.3双字节字符集:双字节字符集(DBCS:double-byte character set),解决中国、日本和韩国的象形
19、文字符和 ASCII 的某种兼容性。DBCS 从 256 代码开始,就像 ASCII 一样。与任何行为良好的代码页一样,最初的 128 个代码是 ASCII。然而,较高的 128 个代码中的某些总是跟随着第二个字节。这两个字节一起(称作首字节和跟随字节)定义一个字符,通常是一个复杂的象形文字。键盘常用 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 键:
20、 VK_MENU (18)空格键: VK_SPACE (32)退格键: VK_BACK (8)左徽标键: VK_LWIN (91)右徽标键: VK_LWIN (92)鼠标右键快捷键: VK_APPS (93)Insert 键: VK_INSERT (45)Home 键: VK_HOME (36)Page Up: 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_
21、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)Num Lock 键: VK_NUMLOCK (144)小键盘 0: VK_NUMPAD0 (96)小键盘 1: VK_NUMPAD1 (97)小键盘 2: VK
22、_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_MULTIPLY (107)小键盘-: VK_SUBTRACT (109)小键盘/: VK_DIVIDE (111)Pause Break 键: VK_PAUSE (19)Scroll Lock 键: VK_SCROLL (145)