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性能最佳实践的讨论,与求教
Mar 30 Javascript
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
jQuery中[attribute!=value]选择器用法实例
Dec 31 Javascript
js进行表单验证实例分析
Feb 10 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
Oct 27 Javascript
Vue.js -- 过滤器使用总结
Feb 18 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
在antd中setFieldsValue和defaultVal的用法
Oct 29 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
浅谈php://filter的妙用
2019/03/05 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
js单例模式的两种方案
2013/10/22 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
详解Python3中yield生成器的用法
2015/08/20 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python中的默认参数实例分析
2018/01/29 Python
3分钟学会一个Python小技巧
2018/11/23 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
python实现文法左递归的消除方法
2020/05/22 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
幼儿园教师备课制度
2014/01/12 职场文书
音乐教学案例
2014/01/30 职场文书
主题教育活动总结
2014/05/05 职场文书
离婚协议书范文
2015/01/26 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
使用CSS设置滚动条样式
2022/01/18 HTML / CSS