关于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 相关文章推荐
用JQuery 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
Aug 02 Javascript
jquery实现的下拉和收缩效果示例
Aug 21 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
jquery实现select下拉框美化特效代码分享
Aug 18 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
angular共享依赖的解决方案分享
Oct 15 Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 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
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
Python 文件操作实现代码
2009/10/07 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
python实现视频分帧效果
2019/05/31 Python
python多线程使用方法实例详解
2019/12/30 Python
python解析多层json操作示例
2019/12/30 Python
用python解压分析jar包实例
2020/01/16 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
廉政承诺书
2015/01/19 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
员工工作心得体会
2019/05/07 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang
cypress测试本地web应用
2022/06/01 Javascript