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 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
Javascript学习笔记5 类和对象
Jan 11 Javascript
IE6下js通过css隐藏select的一个bug
Aug 16 Javascript
javascript 进阶篇2 CSS XML学习
Mar 14 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
Javascript实现单例模式
Jan 24 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
Jun 30 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
Jun 01 Javascript
基于vue实现可搜索下拉框定制组件
Mar 26 Javascript
jquery操作select常见方法大全【7种情况】
May 28 jQuery
JavaScript eval()函数定义及使用方法详解
Jul 07 Javascript
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
在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+html5基于websocket实现聊天室的方法
2015/07/17 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
python端口扫描系统实现方法
2014/11/19 Python
python实现2048小游戏
2015/03/30 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Django如何配置mysql数据库
2018/05/04 Python
Numpy之random函数使用学习
2019/01/29 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
枚举与#define宏的区别
2014/04/30 面试题
运动会广播稿60字
2014/01/15 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
员工入职担保书范文
2014/04/01 职场文书
校园安全演讲稿
2014/05/09 职场文书
师德标兵事迹材料
2014/12/19 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript