关于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修改网页背景颜色通过css方法实现
Jun 06 Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 Javascript
总结Javascript中的隐式类型转换
Aug 24 Javascript
JavaScript模块化之使用requireJS按需加载
Apr 12 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
js+canvas实现滑动拼图验证码功能
Mar 26 Javascript
JavaScript数组去重的几种方法
Apr 07 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
element-ui table组件如何使用render属性的实现
Nov 04 Javascript
js实现有趣的倒计时效果
Jan 19 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
php xml文件操作实现代码(二)
2009/03/20 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
php实现用户登陆简单实例
2017/04/04 PHP
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
MySQL最常见的操作语句小结
2015/05/07 Python
Python的Django框架中的Context使用
2015/07/15 Python
简单谈谈python中的多进程
2016/11/06 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
国庆宣传标语
2014/06/30 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
骨干教师申报材料
2014/12/17 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
高中物理教学反思
2016/02/19 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang