0%

转义字符

转义字符的定义

转义字符(Escape Character)是指在ASCII码和Unicode等字符集中无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。也就是说像\t,\n等类似的字母都不是其在ASCII码中的含义,字符被使用时已经被转换了意义。

对于ASCII编码,0-31(十进制)范围内的字符为控制字符,它们都是看不见的,即不能再显示器上显示,甚至无法从键盘输入;部分控制字符在编码语言中还被定义为特殊用途。因此只能用转义字符的形式来表示它们。不过,直接使用ASCII码记忆不方便,也不容易理解,所以针对常用的控制字符,各类编程语言对转义字符又定义了简写方式。

  1. 无法被键盘录入的字符
    例如,ASCII码值为7的转义字符\a便是无法被键盘录入的字符,\a被转换后的意义是响铃符(BEL),但键盘上没有任何单个按键可以表示响铃符(BEL),因此其需要转义字符\a来表示。
    那如果我们想在C语言中使用响铃符,代码如下:

    1
    printf("%c",'\a');//电脑将发出一声“嘀”
  2. 被当做特殊用途而需要转换它原来意义的字符
    例如,HTML中,<便是被当做特殊用途而需要转换回它原来意义的字符。它被HTML定义为标签的开始,所以当我们在HTML语法的代码中输入<时,HTML就会把它单做为标签的开始,而不是当做一个普通字符<来看待

常见的转义字符

ASCII编码中所有的转义字符和所对应的意义:

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS),将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF),将当前位置移到下一行开头010
\r回车(CR),将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\代表一个反斜线字符’’’092
代表一个单引号(撇号)字符039
代表一个双引号字符039
?代表一个问号063
\0空字符(NUL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh十六进制所代表的任意字符十六进制

各类编程语言中的转义字符

其实所有的编程语言,拥有转义字符的原因基本上是两点:

  1. 使用转义字符来表示字符集中定义的字符,比如ASCII里面的控制字符及回车换行等字符,这些值符都没有现成的文字代号,即无法用键盘上任何单个按键表示,所以只能用转义字符来表示。
  2. 某一些特定的字符在编辑语言中被定义为特殊用途字符。这些字符由于被定义为特殊用途,它们失去了原有的意义。比如说PHP的双引号'‘,被PHP定义为字符串的外围标签,所以如果你在一对双引号里面,还想要使用双引号,只能上用转义字符\“了。不然PHP就会报错。

从上面可看出转义无非是两种情况:

  1. 将普通字符转为特殊用途,一般是编程语言中,用于表示不能直接显示的字符,比如后退键,回车间等。
  2. 用来将特殊意义的字符转换回它原来的意义。一般用在正则表达式中。还有些脚本语言是弱类型,有些语言比如HTML并不是编程语言,而是标记语言,有些语言只有一种类型,比如shell脚本语言,这些语言中字符串都不加引号,或者既可以加引号也可以不加引号,所以有时候需要转义字符说明某些字符此时的身份为普通字符,而不是有特殊意义的元字符。