ASCII

ASCII（ˈ，American Standard Code for Information Interchange，美国信息交换标准代码）是基于拉丁字母的一套电脑字符编码标准。它主要用于显示现代英语，而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言，并等同于国际标准ISO/IEC 646。

ASCII是这套编码标准的传统命名，互联网号码分配局现在更倾向于使用它的新名字US-ASCII。

ASCII是美国电气和电子工程师协会里程碑之一。

ASCII由电报码发展而来。第一版标准发布于1963年，1967年经历了一次主要修订，最后一次更新则是在1986年，至今为止共定义了128个字元；其中33个字元无法显示（一些终端提供了扩展，使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号），且这33个字元多数都已是陈废的控制字元。控制字元的用途主要是用来操控已经处理过的文字。在33个字元之外的是95个可显示的字元。用键盘敲下空白键所产生的空白字元也算1个可显示字元（显示为空白）。

## 技术背景

在计算机中，所有的数据在存储和运算时都要使用二进制数表示。例如，像a、b、c、d这样的52个字母（包括大写）以及0、1等数字还有一些常用的符号（例如*、#、@等）在计算机中存储时也要使用二进制数来表示，而具体用哪些二进制数字表示哪个符号，这就是编码。如果不同的计算机要想互相通信而不造成混乱，那么每台计算机就必须使用相同的编码规则，于是美国有关的标准化组织就推出了ASCII编码。

ASCII是由美国国家标准学会（American National Standard Institute，ANSI）制定的，使用标准的单字节字符编码方案，用于基于文本的数据。方案起始于50年代后期，在1967年定案。它最初是美国的标准，供不同计算机在相互通信时需共同遵守的西文字符编码标准。现已被国际标准化组织（International Organization for Standardization，ISO）定为国际标准（ISO/IEC 646），适用于所有拉丁字母。

## 控制字符

ASCII控制字符的编号范围是0-31和127（16进制：0x00-0x1F和0x7F），共33个字符。

为方便人类用户阅读，各个控制字符均有Unicode表示法和脱出字元表示法：

- Unicode表示法：当想在画面或纸上表示这些控制字元时，就会显示成这个样子。过于老旧的系统或浏览器可能会看不到。使用微软任一中文输入法，输入`U2400即可看到␀，輸入`U2401可看到␁，依此类推。
- 脱出字元表示法：通常用于终端机连线（例如Telnet通讯协定），以脱出字元^开头，再接一个符号，用来让这些控制字元得以在画面上显现。虽然看起来是两个字元，但在终端机上实际只有一个字元。在绝大部分的终端机系统中，包括Windows的命令提示字元（cmd.exe）、Linux和FreeBSD，都可用Ctrl代表脱出字元，输入想要的ASCII控制字元。例如想输入空字符，就要输入Ctrl+2，而非，后者会显示成两字元，前者只会显示成一字元。

二进制｜十进制｜十六进制｜缩写｜Unicode表示法｜脱出字元表示法｜名称／意义

0000 0000｜0｜00｜NUL｜␀｜^@｜空字符（Null）

0000 0001｜1｜01｜SOH｜␁｜^A｜标题开始

0000 0010｜2｜02｜STX｜␂｜^B｜本文开始

0000 0011｜3｜03｜ETX｜␃｜^C｜本文结束字符

0000 0100｜4｜04｜EOT｜␄｜^D｜传输结束

0000 0101｜5｜05｜ENQ｜␅｜^E｜询问字符

0000 0110｜6｜06｜ACK｜␆｜^F｜确认回应

0000 0111｜7｜07｜BEL｜␇｜^G｜响铃字符

0000 1000｜8｜08｜BS｜␈｜^H｜退格

0000 1001｜9｜09｜HT｜␉｜^I｜水平定位符号

0000 1010｜10｜0A｜LF｜␊｜^J｜换行

0000 1011｜11｜0B｜VT｜␋｜^K｜垂直定位符号

0000 1100｜12｜0C｜FF｜␌｜^L｜换页键

0000 1101｜13｜0D｜CR｜␍｜^M｜回车符

0000 1110｜14｜0E｜SO｜␎｜^N｜取消变换（Shift out）

0000 1111｜15｜0F｜SI｜␏｜^O｜启用变换（Shift in）

0001 0000｜16｜10｜DLE｜␐｜^P｜跳出数据通讯

0001 0001｜17｜11｜DC1｜␑｜^Q｜设备控制一（XON 启用软件速度控制）

0001 0010｜18｜12｜DC2｜␒｜^R｜设备控制二

0001 0011｜19｜13｜DC3｜␓｜^S｜设备控制三（XOFF 停用软件速度控制）

0001 0100｜20｜14｜DC4｜␔｜^T｜设备控制四

0001 0101｜21｜15｜NAK｜␕｜^U｜确认失败回应

0001 0110｜22｜16｜SYN｜␖｜^V｜同步用暂停

0001 0111｜23｜17｜ETB｜␗｜^W｜区块传输结束字元

0001 1000｜24｜18｜CAN｜␘｜^X｜取消字符

0001 1001｜25｜19｜EM｜␙｜^Y｜连线介质中断

0001 1010｜26｜1A｜SUB｜␚｜^Z｜替换

0001 1011｜27｜1B｜ESC｜␛｜^｜退出键

0001 1100｜28｜1C｜FS｜␜｜^\｜文件分割符

0001 1101｜29｜1D｜GS｜␝｜^｜群组分隔符

0001 1110｜30｜1E｜RS｜␞｜^^｜记录分隔符

0001 1111｜31｜1F｜US｜␟｜^_｜单元分隔符

0111 1111｜127｜7F｜DEL｜␡｜^?｜Delete字符

## 可显示字符

可显示字符也称为可打印字符，其编号范围是32-126（0x20-0x7E），共95个字符。

32～126(共95个)是字符(32是空格)，其中48～57为0到9十个阿拉伯数字。

65～90为26个大写英文字母，97～122号为26个小写英文字母，其余为一些标点符号、运算符号等。

二进制｜十进制｜十六进制｜图形 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｜. 0010 1111｜47｜2F｜/ 0011 0000｜48｜30｜0 0011 0001｜49｜31｜1 0011 0010｜50｜32｜2 0011 0011｜51｜33｜3 0011 0100｜52｜34｜4 0011 0101｜53｜35｜5 0011 0110｜54｜36｜6 0011 0111｜55｜37｜7 0011 1000｜56｜38｜8 0011 1001｜57｜39｜9 0011 1010｜58｜3A｜: 0011 1011｜59｜3B｜; 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 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｜Y 0101 1010｜90｜5A｜Z 0101 1011｜91｜5B｜ 0101 1100｜92｜5C｜\ 0101 1101｜93｜5D｜ 0101 1110｜94｜5E｜^ 0101 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 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 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 1110｜126｜7E｜~

## 缺点

ASCII的局限在于只能显示26个基本拉丁字母、阿拉伯数字和英式标点符号，因此只能用于显示现代美国英语（且处理naïve、café、élite等外来语时，必须去除附加符号）。虽然EASCII解决了部分西欧语言的显示问题，但对更多其他语言依然无能为力。因此，现在的软件系统大多采用Unicode，特别是与ASCII向下兼容的UTF-8。