
转义字元串
(Escape character),原本是指ASCII中的十进制27,十六进制1B,八进制033所定义的那个字元。对应于标準键盘左上角的ESC键。老式键盘如果没有ESC键,替代输入是“Ctrl+[”。在老式的计算机外设控制协定,ASCII码的十进制27这个字元开始的一个字元序列,是外设的控制序列,不能按照这些字元的字面意义解释。后来,就把最初的狭义的Escape character的含义引申开来,在各种计算机语言与协定中,标誌着一个转义序列开始的那个字元,都叫做Escape character。最常见的一个例子是C程式设计语言中,用反斜线字元“\”作为转义字元,来表示那些不可列印的ASCII控制符。在URI协定中,转义字元是百分号“%”。
基本介绍
- 中文名:转义字元串
- 外文名:Data Link Escape Character
1英语解释
Data Link Escape Character 数据传送换码字元(通信控制用)
C语言转义
字元表
所有的转义字元和所对应的意义:
转义字元 | 意义 | 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 |
\" | 代表一个双引号字元 | 034 |
\0 | 空字元(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字元 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字元 | 二位十六进制 |
注意:区分,斜槓:"/" 与 反斜槓:"\" ,此处不可互换
字元型常量
字元型常量所表示的值是字元型变数所能包含的值。大家可以用ASCII表达式来表示一个字元型常量,或者用单引号内加反斜槓表示转义字元。
'A', '\x2f', '\013';
其中:\x表示后面的字元是十六进制数,\0表示后面的字元是八进制数。
注意:在Turbo C 2.0中,字元型常量表示数的範围是-128到127,除非你把它声明为unsigned,这样就是0到255。
上面大家见到的\x,\n,\a等等都是叫转义字元,它告诉编译器需要用特殊的方式进行处理。
2程式语言
编辑
如HTML转义符、java 转义符、xml 转义符、 oracle 转义符、sql 转义符 、sqlserver 转义符、php 转义符、asp 转义符、vb转义符、 javascript 转义符等等,还有网址中的百分号。
例如,HTML的<; >;&;";©;对别是<,>,&,",©;的转义字元
XML只有5个转义符: <; >;&; "; &apos;
3作用介绍
编辑
转义字元串(Escape Sequence)也称字元实体(Character Entity)。在HTML中,定义转义字元串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标籤,因此就不能直接当做文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字元串。当解释程式遇到这类字元串时就把它解释为真实的字元。在输入转义字元串时,要严格遵守字母大小写的规则。第二个原因是,有些字元在ASCII字元集中没有定义,因此需要使用转义字元串来表示。
其实所有程式语言,拥有转义字元的原因基本上是两点:一、使用转义字元来表示字元集中定义的字元,比如ASCll里面的控制字元及回车换行等字元,这些字元都没有现成的文字代号。所以只能用转义字元来表示 。二、某一些特定的字元在编辑语言中被定义为特殊用途的字元。这些字元由于被定义为特殊用途,它们失去了原有的意义。比如说Html中,<被HTML定义为标籤的开始,所以当大家转入<时,HTML就会把它当作为开始,而不是当作一个<来看待。再如PHP 的双引号("),被PHP定义为字元串的外围标籤,所以如果你在一对双引号里面,还想要使用双引号,只能使用转义字元了。不然PHP就会报错了。
另外出于网站的安全。在数据写入资料库前,都会使用转义字元(函式)对一些敏感字元进行转义。这样做可以避免一些别有用心的人利用特殊符号的注入攻击。
4显示空格
编辑
通常情况下,HTML会自动截去多余的空格。不管你加多少空格,都被看做一个空格。比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个。为了在网页中增加空格,你可以使用  ;表示空格。
5组成信息
编辑
转义字元串( Escape Sequence),即 字元实体( Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。
比如,要显示小于号(<),就可以写 <; 或者 < 。
用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号,各种浏览器都能处理。
提示:实体名称(Entity)是区分大小写的。
备注:同一个符号,可以用“实体名称”和“实体编号”两种方式引用,“实体名称”的优势在于便于记忆,但不能保证所有的浏览器都能顺利识别它,而“实体编号”则没有这种担忧,但它实在不方便记忆。
6转义符
编辑
转义序列 字元
\b 退格
\f 走纸换页
\n 换行
\r 回车
\t 横向跳格 (Ctrl-I)
\' 单引号
\"双引号
\\反斜槓
特殊转义字元列表
7url
编辑
web 开发中通过问号(?)方式在浏览器地址栏中传值时。浏览器是通过“&”来区分问号后的参数个数的。 如果出现传值参数中带有“&”时,在接受页面就会出现错误,类似如下请求路径:/next.jsp?param1=hendhs89&furej & param2=sss
参数param1中含有转义字元“&” ,这样会导致被请求页的参数接收错误。
在传值前 通过 java.net.URLEncoder.encode(param1) 编码处理后,可将转义字元转为16进制;
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字元%25
6. # 表示书籤 %23
7. & URL中指定的参数间的分隔设定%26
8. = URL中指定参数的值 %3D
9. ! URL中指定参数的值 %21
^ %5E
` %60
{ %7B
} %7D
| %7C
] %5D
[ %5B
" %22
< %3C
> %3E
\ %5
8如何避免
编辑
在编写网页时,如果直接在双引号之间输入路径,其中的“\”及其之后的文本易被误认为转义字元。为避免这一点,只需在字元串的引号前加“@”符号(不包括外侧引号)。如: @ "c:\ab\cd\ef.jpg" 。