`
maosuhan
  • 浏览: 109600 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

字符串的转义种种

阅读更多

在编程里,转义字符指有特殊意味的字符。

在中文中,也有转义一说,如“社稷”一词,古人称土神为“社”,“稷”为五谷之长,立稷而祭,以稷为谷神。古时天子、诸侯都要祭祀社稷,后来就以“社稷”一词称国家。又如“齿”是牙齿,年龄也称年齿。人以年齿相比列,凡不能比次在一起,非同一类的就说“不齿”。

在编程里面,也有转义一说。你可以翻阅ascii表,你会发现里面有好多很奇怪的字符,特别是刚开始排列的那些。

 

00 NUL 空 
01 SOH 标题开始 
02 STX 正文开始
03 ETX 正文结束
04 EOT 传输结否
05 ENQ 询问
06 ACK 确认
07 BEL 响铃
08 BS 退格
09 HT 横向列表
10 LF 换行
11 VT 纵向列表
12 FF 换页
13 CR 回车
14 SO 换档(Shift-Out)

上面写的那些其实都可以用转义字符来表示,比如\0就是空字符啊,\n就是换行啊,\t就是水平制表符啊。发现其实\还有n其实都是字符可以分开来解释,但是它们组合在一起就又有了新的意思了,就像“社”,“稷”,可以单独解释啊,但是合在一起就表示了另一个意思了,我想这就是转义的意思吧!也就是说解释器是一个字一个字地理解这个字符串的意思的,但是碰到像这些诡异的转义字符\xxx就要用另一个意思来理解了。

 

在html里面有转义的,你看在html里<和>是敏感词汇,那么就要用其他的意思来表示文本意义的“<”和“>”,也就是&lt;这个符号,包括空格在html里也是诡异的东东,同样也需要转义字符来代替,&nbsp;

 

在sql里面,双引号也是一个很敏感的字符,为了防止冲突就用\"来表示文本意思的双引号。

 

这里我们可以发现,转义出现的情况其实是这样的,当我们没有办法用普通的那些abcd1234的字符去表达某个玩意的时候,我们就要用到转义了。这个玩意可以是html里的文本意义上的空格或是><,也可能是sql里的双引号。于是转义就出现了,用普通的字符去表示特殊的意义。

 

比如说是url参数的转义,参数里面如果有&就会错误,必须转义成%xx的样子才行,空格也要转,加好也要转,就是这样。

 

但是呢,并不是说转义只是因为我们不能用常规方法表示,你看那个中文里的“不齿”,你用“不屑”也可以,“不齿”只是相当于一个别名而已。像html里 面,所有的文本意义的字母都是可以用转义表示的。

 

像“a”就可以用&#97 <script type="text/javascript">&lt;![CDATA[rw(&quot;J&quot;, ark7);]]&gt;</script> ;来表示“~”可以用&#126;表示。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics