例如:
var txt="We are the so-called "Vikings" from the north." document.write(txt) 【错误】
var txt="We are the so-called \"Vikings\" from the north." document.write(txt) 【正确】
1、如果手动转的话,用replace()函数将字符替换成对应的字符。2、js中有一个专门的转16进制的编码函数:encodeURI()
网址URL中特殊字符转义编码
字符 - URL编码值
空格 - %20
" - %22
# - %23
% - %25
&- %26
( - %28
) - %29
+ - %2B
, - %2C
/ - %2F
: - %3A
- %3B
<- %3C
= - %3D
>- %3E
? - %3F
@ - %40
\ - %5C
| - %7C
URL特殊字符转义
URL中一些字符的特殊含义,基本编码规则如下:
1、空格换成加号(+)
2、正斜杠(/)分隔目录和子目录
3、问号(?)分隔URL和查询
4、百分号(%)制定特殊字符
5、#号指定书签
6、&号分隔参数
如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值
+ %2B
/ %2F
? %3F
% %25
# %23
&%26
由于在项目中经常要用AJAX传SQL给后台服务端
会遇到select num+1 from dual或者左右连接形式。总会丢掉(+)
这个时候可以尝试用一下URL特殊字符转义
用JS的encodeURI()函数或者直接改成相对应的十六进制的值
看网上介绍encodeURI函数也是讲URI转义
(转自另外一个问题的回答:知道搜索条目--》百度的%符号是什么意思)
由于度娘会吞链接,所以不妨链接了。
//转码var url = encodeURIComponent("http://localhost:8888/xx/yy?a=aaa&b=bbb&c=ccc")
//解码
var ourl = decodeURIComponent(url)
另外还有encodeURI/decodeURI,escape/unescape,最常用的是encodeURIComponent
/decodeURIComponent它可以将参数中的中文、特殊字符进行转义,而不会影响整个URL。