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 04 Javascript
javascript 页面划词搜索JS
Sep 28 Javascript
JavaScript中使用Object.create()创建对象介绍
Dec 30 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
基于ES6 Array.of的用法(实例讲解)
Sep 05 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
详解使用jest对vue项目进行单元测试
Sep 07 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
js中延迟加载和预加载的具体使用
Jan 14 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
基于文本的留言簿
2006/10/09 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
php适配器模式简单应用示例
2019/10/23 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
js查错流程归纳
2012/05/04 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
jQuery实现开关灯效果
2020/08/02 jQuery
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Python对象转换为json的方法步骤
2019/04/25 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
教师党员一句话承诺
2014/03/28 职场文书
个人融资协议书
2014/10/02 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
质量保证书
2015/01/17 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
Linux中各个目录的作用与内容
2022/06/28 Servers