js 转义字符及URI编码详解


Posted in Javascript onFebruary 28, 2017

URL中的转义字符

当URL的参数中出现诸如+,空格,/,?,%,#,&,=等特殊字符串符号时,因为上述字符有特殊含义,导致服务器端无法正确解析参数,如何处理?解决办法:将这些字符转化成服务器可以识别的字符。

如果要在URL中传递特殊符号的原本意义,要对他们进行编码。编码的格式为:%加字符的ASCII码(16进制),例如空格的编码值是"%20"。

URL中特殊符号的用途及普通意义的编码

+ URL 中+号表示空格 %2B
空格 URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D

HTML中的转义字符

转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,“<”和“>”符号用来表示HTML标签,不能当作普通的符号来使用。如果要在HTML文档中使用这些特殊符号原有的意义,就需要定义对应的转义字符串。当浏览器遇到这类转义字符时就会解释为真实的字符而不是特殊用途。另外有些字符在ASCII字符集中没有文字代号,只能用转义字符串来表示,如回车换行符,退格键等。

字符 十进制 转义字符
" " "
& & &
< <
> >
不断开空格(non-breaking space)    

JavaScript中的转义

JavaScript 中有些字符有特殊用途,如果字符串中想使用这些字符原来的含义,需要使用反斜杠对这些特殊符号进行转义。

正则中也有需要转义的字符:* . ? + $ ^ [ ] ( ) { } | \ /,也是通过\反斜杠进行转义。但是中括号里并不是元字符,不需要转义。

在js中字符串形式的正则表达式匹配一个反斜杠要用四个反斜杠'\\\\', 第一个斜杠是js字符串的转义符,第二个斜杠是斜杠本身,第三个斜杠是js字符串的转义符,第四个斜杠是斜杠本身。将第二、四个反斜杠转为正则中的斜杠后,前面一个为正则中的转义符,将后者变为普通符号。字符串形式的正则表达式里的斜杠也是特殊符号,若要当普通符号使用,也需要转义,用“\\”标示。因为js中反斜扛为特殊符号(转义字符),js字符串里面表示斜杠需要一次转义:“\\”。

在比如:字面量形式/\{.*\}/---->字符串形式'\\{.*\\}'。因为{号为正则中的特殊符号,需要加\转义,而字符串中的\又是js中的特殊符号,需要再加一个\进行转义。

注意正则的字面量形式只需要对正则中的特殊符号转义,不需要对js的特殊符号转义。

代码 输出的普通字符
\' 单引号
\" 双引号
\& 和号
\\ 反斜杠
\n 换行符
\r 回车符
\t 制表符
\b 退格符
\f 换页符

js中对字符串进行编码的方法

1.encodeURI()把字符串作为 URI整体进行编码,所以URI组件中的特殊分隔符号(;/:@&=+$?#),encodeURI() 函数不会进行转义。该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

encodeURI("http://www.w3school.com.cn")

输出http://www.w3school.com.cn

2.encodeURIComponent()把字符串作为 URI 组件的一部分(如path/query/fragment等)进行编码,所以用于分隔 URI 各个部分的特殊分隔符号(;/?:@&=+$,#)也会被转义。返回值中某些字符将被十六进制的转义序列替换。该方法也不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

encodeURIComponent("http://www.w3school.com.cn")

输出http%3A%2F%2Fwww.w3school.com.cn

3.decodeURI()/decodeURIComponent()解码URI中被转义的字符

decodeURIComponent(%E4%BD%A0%E5%A5%BDjavascript);

输出你好javascript

4.escape()用于对字符串进行编码,并返回编码字符串。但目前已不推荐使用该函数对URI进行编码。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
Dec 03 Javascript
javascript实现简单的ajax封装示例
Dec 28 Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 Javascript
js中的事件委托或是事件代理使用详解
Jun 23 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
vue弹窗插件实战代码
Sep 08 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
Nov 11 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
vue实现简单瀑布流布局
May 28 Javascript
vue内置组件keep-alive事件动态缓存实例
Oct 30 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
Feb 28 #Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
Feb 28 #Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 #Javascript
原生js实现可拖拽效果
Feb 28 #Javascript
javascript 面向对象function详解及实例代码
Feb 28 #Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 #Javascript
原生js实现鼠标跟随效果
Feb 28 #Javascript
You might like
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
在vs2010中调试javascript代码方法
2011/02/11 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
js实现交通灯效果
2017/01/13 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
浅谈vue 单文件探索
2018/09/05 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
Python 加密的实例详解
2017/10/09 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
python__name__原理及用法详解
2019/11/02 Python
为什么相对PHP黑python的更少
2020/06/21 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
财务会计专业毕业生自荐信
2013/10/19 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
Win11软件图标固定到任务栏
2022/04/19 数码科技