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 相关文章推荐
基于jquery的可多选的下拉列表框
Jul 20 Javascript
jquery iframe操作详细解析
Nov 20 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
Node.js 应用跑得更快 10 个技巧
Apr 03 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 Javascript
Vue.js系列之vue-router(上)(3)
Jan 03 Javascript
Vue.js路由vue-router使用方法详解
Mar 20 Javascript
浅谈js中的this问题
Aug 31 Javascript
tracking.js页面人脸识别插件使用方法
Apr 16 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
YII框架常用技巧总结
2019/04/27 PHP
js DOM模型操作
2009/12/28 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
react基本安装与测试示例
2020/04/27 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
12步教你理解Python装饰器
2016/02/25 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
Python面试题:Python是如何进行内存管理的
2014/08/04 面试题
opencv实现图像平移效果
2021/03/24 Python
效能监察建议书
2014/05/19 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
安全温馨提示语大全
2015/07/14 职场文书
2019同学聚会主持词
2019/05/06 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL