JS对URL字符串进行编码/解码分析


Posted in Javascript onOctober 25, 2008

虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊
字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问
题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是
UTF-8),使用escape()转换传输中文字串就会出现乱码问题。
以下是JS下对URL进行编/解码的各种方法:
escape 方法:返回一个可在所有计算机上读取的编码 String 对象。
function escape(charString : String) : String
不会被此方法编码的字符: @ * / +
说明:escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、
重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。
例如,空格返回为“%20”。(字符值大于 255 的字符以 %uxxxx 格式存储。)
注意:escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和
encodeURIComponent 方法。
encodeURI 方法:返回编码为有效的统一资源标识符 (URI) 的字符串。
function encodeURI(URIString : String) : String
不会被此方法编码的字符:! @ # $ & * ( ) = : / ; ? + '
说明:encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的
字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用
encodeURIComponent 对这些字符进行编码。
encodeURIComponent 方法:返回编码为统一资源标识符 (URI) 的有效组件的字符串。
function encodeURIComponent(encodedURIString : String) : String
不会被此方法编码的字符:! * ( ) '
说明:encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给
decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,
请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被
编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI
组件,请使用 encodeURI 方法进行编码。
unescape 方法:从用 escape 方法编码的 String 对象中返回已解码的字符串。
function unescape(charString : String) : String
说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的
字符都用 ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符用十六
进制编码 xxxx 的 Unicode 字符代替。)
注意:unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和
decodeURIComponent 方法。
decodeURI 方法:返回一个已编码的统一资源标识符 (URI) 的非编码形式。
function decodeURI(URIstring : String) : String
decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。
function decodeURIComponent(encodedURIString : String) : String
BTW:C#中对URL编码的方法。。。
编码:Server.UrlEncode(string)
解码:Server.UrlDecode(string) 前面三种客户端编码都可以用这个方法在后台解码。

Javascript 相关文章推荐
js同时按下两个方向键
Dec 01 Javascript
jquery无缝向上滚动实现代码
Mar 29 Javascript
JavaScript两种跨域技术全面介绍
Apr 16 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
Jul 14 Javascript
vue实现树形菜单效果
Mar 19 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
Oct 07 Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 Javascript
基于jQuery拖拽事件的封装
Nov 29 jQuery
在html页面中包含共享页面的方法
Oct 24 #Javascript
IE浏览器兼容Firefox的JS脚本的代码
Oct 23 #Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
Oct 22 #Javascript
checkbox 多选框 联动实现代码
Oct 22 #Javascript
javascript网页关闭时提醒效果脚本
Oct 22 #Javascript
javascript Select标记中options操作方法集合
Oct 22 #Javascript
JavaScript Undefined,Null类型和NaN值区别
Oct 22 #Javascript
You might like
PHP中的正规表达式(一)
2006/10/09 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
Python版的文曲星猜数字游戏代码
2013/09/02 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
深入理解Python中的元类(metaclass)
2015/02/14 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
详解Python 切片语法
2019/06/10 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Python爬取梨视频的示例
2021/01/29 Python
新浪微博实习心得体会
2014/01/27 职场文书
土地转让协议书
2014/04/15 职场文书
情况说明书格式范文
2014/05/06 职场文书
质量承诺书格式
2014/05/20 职场文书
应届大学生自荐书
2014/06/17 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL