1、转义字符
所有的ascii码都可以用“\”加数字(一般是8进制数字)来表示。而c中定义了一些字母前加“\”来表示常见的那些不能显示的ascii字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ascii字符意思了。
2、字符表
所有的转义字符和所对应的意义:
3、字符型常量
字符型常量所表示的值是字符型变量所能包含的值。我们可以用ascii表达式来表示一个字符型常量,或者用单引号内加反斜杠表示转义字符。
‘a’, ‘\x2f’, ‘\013’;
其中:\x表示后面的字符是十六进制数,\表示后面的字符是八进制数。例如十进制的17用十六进制表示就是
‘\x11’,用八进制表示就是‘\21’;
注意:在turbo c 2.0中,字符型常量表示数的范围是-128到127,除非你把它声明为unsigned,这样就是0到255。
上面我们见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要用特殊的方式进行处理。
4、组成
转义字符串(escape string),即字符实体(character entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(entity)名字或者是#加上实体(entity)编号;第三部分是一个分号。
比如,要显示小于号(《),就可以写 《 或者 《 。
用实体(entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的entity名字。而实体(entity)编号,各种浏览器都能处理。
提示:实体名称(entity)是区分大小写的。
备注:同一个符号,可以用“实体名称”和“实体编号”两种方式引用,“实体名称”的优势在于便于记忆,但不能保证所有的浏览器都能顺利识别它,而“实体编号”则没有这种担忧,但它实在不方便记忆。
5、编程语言
如html转义符、java 转义符、xml 转义符、 oracle 转义符、sql 转义符 、sqlserver 转义符、php 转义符、asp 转义符、vb转义符、 javascript 转义符等等,还有网址中的百分号。
例如,html的《 》&“©分别是《,》,&,”,©;的转义字符
xml只有5个转义符: 《 》& “ ‘
6、作用
转义字符串(escape sequence)也称字符实体(character entity)。在html中,定义转义字符串的原因有两个:第一个原因是像“《”和“》”这类符号已经用来表示html标签,因此就不能直接当做文本中的符号来使用。为了在html文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。第二个原因是,有些字符在ascii字符集中没有定义,因此需要使用转义字符串来表示。
其实所有编程语言,拥有转义字符的原因基本上是两点:一、使用转义字符来表示字符集中定义的字符,比如ascll里面的控制字符及回车换行等字符,这些字符都没有现成的文字代号。所以只能用转义字符来表示 。二、某一些特定的字符在编辑语言中被定义为特殊用途的字符。这些字符由于被定义为特殊用途,它们失去了原有的意义。比如说html中,《被html定义为标签的开始,所以当我们转入《时,html就会把它当作为开始,而不是当作一个《来看待。再如php 的双引号(“),被php定义为字符串的外围标签,所以如果你在一对双引号里面,还想要使用双引号,只能使用转义字符了。不然php就会报错了。
从上面也可以看出转义无非是两种情况:1:将普通字符转为特殊用途,一般是编程语言中,用于表示不能直接显示的字符,比如后退键,回车键,等。2:用来将特殊意义的字符转换回它原来的意义。一般用在正则表达式中。还有有些脚本语言是弱类型,有些语言比如html 并不是编程语言,而是标记语言,有些语言只有一种类型 比如shell 脚本语言,这些语言中字符串都不加引号” ” ,或者可以不加引号“ ”,所以有时候需要转义字符说明某字符此时的身份是普通字符,而不是有特殊意义的元字符。
另外出于网站的安全。在数据写入数据库前,都会使用转义字符(函数)对一些敏感字符进行转义。这样做可以避免一些别有用心的人利用特殊符号的注入攻击。
7、显示空格
通常情况下,html会自动截去多余的空格。不管你加多少空格,都被看做一个空格。比如你在两个字之间加了10个空格,html会截去9个空格,只保留一个。为了在网页中增加空格,你可以使用 表示空格。
8、url
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
9、如何避免
在编写网页时,如果直接在双引号之间输入路径,其中的“\”及其之后的文本易被误认为转义字符。为避免这一点,c#等语言只需在字符串的引号前加“@”符号(不包括外侧引号)。如:@ ”c:\ab\cd\ef.jpg“ 。
SKJ-II型数字随动系统中PWM功率变换控制系统
Omniverse 课程系列 7:使用 Isaac Sim 实现机器人仿真入门
一文详解HLS从C/C++到VHDL的转换
ARHT和伦敦商学院合作推出了实时全息讲师
全新结构开放数控系统的研究
c语言中的转义字符
3D面部模型实现一部智能手机就行了
小米王腾辟谣小米10 Pro海报 并称太丑了
如何选择超声波储罐液位传感器(一)
陆风逍遥什么时候上市?已于此前广州车展中亮相,一经亮相外观就相当吸引,性价比高,售价仅6万
基于Moxa UC系列应用的嵌入式系统解决方案
智能家居催生的智能摄像头会走向何方?
赛灵思FPGA与VMware vSphere相结合实现高吞吐量、低时延ML推断性能
高通2亿像素传感器的智能手机不远了
四大瓶颈制约新能源汽车产业发展
KTV包房中如何摆放音响之八大法则
如何保障汽车信息娱乐和机群系统的热安全性
中国芯片发展高峰论坛召开在即
什么是物联网数据采集网关?物联网数据采集网关的特点
充电功率高达55W!魅族Super mCharge全新快充技术正式揭晓