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下利用arguments实现string.format函数
Aug 24 Javascript
js保留两位小数使用toFixed实现
Jul 29 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
Vue.js实现分页查询功能
Nov 15 Javascript
vue.js中实现登录控制的方法示例
Apr 23 Javascript
JS 数组随机洗牌的实例代码
Sep 12 Javascript
在angularJs中进行数据遍历的2种方法
Oct 08 Javascript
微信小程序实现底部导航
Nov 05 Javascript
Node.js console控制台简单用法分析
Jan 04 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
Node.js Domain 模块实例详解
Mar 18 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
PHP异常处理浅析
2015/05/12 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
一分钟理解js闭包
2016/05/04 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
javaScript中的空值和假值
2017/12/18 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python读写ini文件的方法
2015/05/28 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
django之session与分页(实例讲解)
2017/11/13 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
python 实现按对象传值
2019/12/26 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物