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 相关文章推荐
IE php关于强制下载文件的代码
Aug 23 Javascript
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
jQuery文本框(input textare)事件绑定方法教程
Apr 24 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
Feb 04 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
Nov 09 Javascript
js实现打地鼠小游戏
Feb 13 Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
详解Vue.js中.native修饰符
Apr 24 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
在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
一个改进的UBB类
2006/10/09 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
交通文明倡议书
2014/05/16 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
户籍证明书标准模板
2014/09/10 职场文书
小学科学教学计划
2015/01/21 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
Hive日期格式转换方法总结
2022/06/25 数据库