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 变量作用域分析
Jul 04 Javascript
火狐下input焦点无法重复获取问题的解决方法
Jun 16 Javascript
jquery表单验证需要做些什么
Nov 17 Javascript
Bootstrap表单控件使用方法详解
Jan 11 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
Angularjs的键盘事件的绑定
Jul 27 Javascript
VUE长按事件需求详解
Oct 18 Javascript
AngularJs分页插件使用详解
Jun 30 Javascript
Vue创建头部组件示例代码详解
Oct 23 Javascript
js实现视图和数据双向绑定的方法分析
Feb 05 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
Oct 24 Javascript
js观察者模式的弹幕案例
Nov 23 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 xml 入门学习资料
2011/01/01 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
谈谈JavaScript中的函数
2020/09/08 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
数控专业个人求职信范例
2013/11/29 职场文书
工作推荐信范文
2014/05/10 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
学校清明节活动总结
2014/07/04 职场文书
干部对照检查材料范文
2014/08/26 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
整改报告格式
2014/11/06 职场文书
2015年教师新年寄语
2014/12/08 职场文书
写给老师的感谢信
2015/01/20 职场文书
信访维稳承诺书
2015/05/04 职场文书
项目战略合作意向书
2015/05/08 职场文书
公司人力资源管理制度
2015/08/05 职场文书