关于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 相关文章推荐
javascript 关闭IE6、IE7
Jun 01 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
Oct 26 Javascript
去除html代码里面的script正则方法
May 19 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
jQuery EasyUI 页面加载等待及页面等待层
Feb 06 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
Sep 27 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
原生JS实现轮播图效果
Oct 12 Javascript
在vue中使用setInterval的方法示例
Apr 16 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调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
Python实现测试磁盘性能的方法
2015/03/12 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
python中的插入排序的简单用法
2021/01/19 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
什么是封装
2013/03/26 面试题
婚礼主持结束词
2014/03/13 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
个人合作协议范本
2015/08/06 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
如何用python清洗文件中的数据
2021/06/18 Python
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js