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 相关文章推荐
JavaScript 在各个浏览器中执行的耐性
Apr 06 Javascript
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
使用js如何实现全选与全不选
Dec 30 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
Apr 04 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
利用js获取下拉框中所选的值
Dec 01 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
详解Js里的for…in和for…of的用法
Mar 28 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
Dec 29 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
PHP中替换换行符的几种方法小结
2012/10/15 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
详谈PHP编码转换问题
2015/07/28 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
javascript 节点排序 2
2011/01/31 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
如何获取Python简单for循环索引
2019/11/21 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
python实现数字炸弹游戏
2020/07/17 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
幼儿教师自我鉴定
2013/11/02 职场文书
高三政治教学反思
2014/02/06 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
初中生思想道德自我评价
2015/03/09 职场文书