关于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表单常用验证集合
Jan 16 Javascript
一个可拖拽列宽表格实例演示
Nov 26 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
vue.js学习笔记之绑定style样式和class列表
Oct 31 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
swiper自定义分页器使用方法详解
Sep 14 Javascript
Vue函数式组件-你值得拥有
May 09 Javascript
详解vue为什么要求组件模板只能有一个根元素
Jul 22 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 Vue.js
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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python迭代和迭代器详解
2016/11/10 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
基于python图像处理API的使用示例
2020/04/03 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
捷克玩具商店:Bambule
2019/02/23 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
简述安装Slackware Linux系统的过程
2012/01/12 面试题
四年的个人工作自我评价
2013/12/10 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
调研报告的主要写法
2019/04/18 职场文书
CSS基础详解
2021/10/16 HTML / CSS
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS