关于JAVASCRIPT urldecode URL解码的问题


Posted in Javascript onJanuary 08, 2012

这个时候,出现了encodeURIComponent、decodeURIComponent,它可以完全的对URL进行编码解码,但是遇到例如搜索引擎用到的部分转码,又摸不到门了,没问题,PHP官方出了一个解决方案:

decodeURIComponent((str + '').replace(/\+/g, '%20'));

他可以完美的对搜索引擎的地址进行解码,因为搜索引擎只习惯对”空格“进行转码。忘了说还习惯对中文进行转码。。。
那以上所有的方案遇到中文就崩溃了,是的,我也崩溃了,即是部分编码,又是中文。。这让我情何以堪。。。
查了很久可以,不多说你懂的。。。
<script type="text/vbscript"> 
Function str2asc(strstr) 
str2asc = hex(asc(strstr)) 
End Function 
Function asc2str(ascasc) 
asc2str = chr(ascasc) 
End Function 
</script> 
<script type="text/javascript"> 
/*这里开始时UrlEncode和UrlDecode<a href="/?tag=%E5%87%BD%E6%95%B0" target="_blank">函数</a>*/ 
function UrlEncode(str){ 
var ret=""; 
var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%"; 
var tt= ""; 
for(var i=0;i<str.length;i++){ 
var chr = str.charAt(i); 
var c=str2asc(chr); 
tt += chr+":"+c+"n"; 
if(parseInt("0x"+c) > 0x7f){ 
ret+="%"+c.slice(0,2)+"%"+c.slice(-2); 
}else{ 
if(chr==" ") 
ret+="+"; 
else if(strSpecial.indexOf(chr)!=-1) 
ret+="%"+c.toString(16); 
else 
ret+=chr; 
} 
} 
return ret; 
} 
function UrlDecode(str){ 
var ret=""; 
for(var i=0;i<str.length;i++){ 
var chr = str.charAt(i); 
if(chr == "+"){ 
ret+=" "; 
}else if(chr=="%"){ 
var asc = str.substring(i+1,i+3); 
if(parseInt("0x"+asc)>0x7f){ 
ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6))); 
i+=5; 
}else{ 
ret+=asc2str(parseInt("0x"+asc)); 
i+=2; 
} 
}else{ 
ret+= chr; 
} 
} 
return ret; 
} 
</script>

这个呢对仅对支持VB的浏览器支持。。。例如FF就不支持了。。。
为什么要用到VB呢?因为str2asc、asc2str这种方法是JS不能满足的。。。下面我模拟了两个JS方法,貌似不是对所有中文有效。。
function str2asc(str){ 
return str.charCodeAt(0).toString(16); 
} 
function asc2str(str){ 
return String.fromCharCode(str); 
}
Javascript 相关文章推荐
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 Javascript
javascript搜索框效果实现方法
May 14 Javascript
js实现三张图(文)片一起切换的banner焦点图
Aug 25 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
vue绑定事件后获取绑定事件中的this方法
Sep 15 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
使用Ajax实现无刷新上传文件
Apr 12 Javascript
Echarts如何重新渲染实例详解
May 30 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
Jan 08 #Javascript
人人网javascript面试题 可以提前实现下
Jan 05 #Javascript
javascript是怎么继承的介绍
Jan 05 #Javascript
js 链式延迟执行DOME
Jan 04 #Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 #Javascript
Textarea与懒惰渲染实现代码
Jan 04 #Javascript
js中有关IE版本检测
Jan 04 #Javascript
You might like
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
原生js实现分页效果
2020/09/23 Javascript
Python argv用法详解
2016/01/08 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
Python3读写ini配置文件的示例
2020/11/06 Python
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
计算机本科生自荐信
2013/10/15 职场文书
采购文员岗位职责
2013/11/20 职场文书
工程部经理岗位职责
2013/12/08 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
人事任命通知
2015/04/20 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
OpenCV实现反阈值二值化
2021/11/17 Java/Android
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL