Javascript URL 编码区别及转义字符处理
来源:互联网 发布:酱紫是什么网络用语 编辑:程序博客网 时间:2024/06/10 02:39
http://blog.sina.com.cn/s/blog_473491a40100gzru.html
Javascript URL 编码区别及转义字符处理
(2010-01-25 11:04:49)前端开发工程师
web前端开发
url转义
url编码
it
分类: WEB开发JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函数
定义和用法
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
语法
escape(string)
返回值
已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
2 encodeURI()函数
定义和用法
encodeURI() 函数可把字符串作为 URI 进行编码。
语法
encodeURI(URIstring)
返回值
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
3 encodeURIComponent() 函数
定义和用法
encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
语法
encodeURIComponent(URIstring)
返回值
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
提示和注释
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。
4 总结:
5 示例:
1 escape()
<script type="text/javascript">document.write(escape("http://www.w3school.com.cn") + "<br />")document.write(escape("?!=()#%&"))</script>
输出:
%3F%21%3D%28%29%23%25%26
2 encodeURI()
<script type="text/javascript">document.write(encodeURI("http://www.w3school.com.cn")+ "<br />")document.write(encodeURI("http://www.w3school.com.cn/My first/"))document.write(encodeURI(",/?:@&=+$#"))</script>
输出:
http://www.w3school.com.cnhttp://www.w3school.com.cn/My%20first/,/?:@&=+$#对整个URL进行编码,而URL的特定标识符不会被转码。3 encodeURIComponent() 例1:<script type="text/javascript">document.write(encodeURIComponent("http://www.w3school.com.cn"))document.write("<br />")document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))document.write("<br />")document.write(encodeURIComponent(",/?:@&=+$#"))</script
输出:
例2:
<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+' ">退出</a>');</script> 对URL中的参数进行编码,因为参数也是一个URL,如果不编码会影响整个URL的跳转。
URL中一些字符的特殊含义,基本编码规则:
1、空格换成加号(+)
2、正斜杠(/)分隔目录和子目录
3、问号(?)分隔URL和查询
4、百分号(%)制定特殊字符
5、#号指定书签
6、&号分隔参数
转义字符的原因:
如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如
表单的action为list.jsf?act=go&state=5
则提交时通过request.getParameter可以分别取得act和state的值。
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义
url转义字符原理:
将这些特殊的字符转换成ASCII码,格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
URL特殊符号及对应的十六进制值编码:
1. +
2. 空格 URL中的空格可以用+号或者编码 %20
3. /
4. ?
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
- Javascript URL 编码区别及转义字符处理
- Javascript URL 编码区别及转义字符处理
- Javascript URL 编码区别及转义字符处理
- Javascript URL 编码区别及转义字符处理
- Javascript URL 编码区别及转义字符处理
- Javascript URL 编码区别及转义字符处理
- Javascript URL 转义字符
- javascript字符编码、转义
- 网址URL中特殊字符转义编码
- 网址URL中特殊字符转义编码
- 网址URL中特殊字符转义编码
- 网址URL中特殊字符转义编码
- javascript url post 特殊字符转义 + & # 等
- url,html,javascript中的转义字符
- URL中文转义和特殊字符处理
- 字符编码,URL编码,JavaScript编码函数
- url特殊字符转义及解决方法
- url特殊字符转义及解决方法
- Linux下常用压缩格式的压缩与解压方法
- Windows计划任务框架WinServiceTask
- java并发【内容多的那叫一个苦逼啊】
- cstring 转 utf8
- vc++实现U盘介质加密解密保障存储安全
- Javascript URL 编码区别及转义字符处理
- 进制转换
- linux socket UDP编程发送广播
- iPhone&iPad越狱后的操作
- JS 对浏览器cookie的使用
- vc++ mfc 里保存缩放的bmp图片 不失真
- c# List find()方法返回值的问题(返回结果为对象的指针)
- js 处理浏览器不支持js代码的两种处理方式
- 关系数据库设计范式