关于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 相关文章推荐
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
学习使用jquery iScroll.js移动端滚动条插件
Mar 24 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
JavaScript实现换肤功能
Sep 15 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
vue中v-for通过动态绑定class实现触发效果
Dec 06 Javascript
基于JavaScript 实现拖放功能
Sep 12 Javascript
Vue的click事件防抖和节流处理详解
Nov 13 Javascript
五句话帮你轻松搞定js原型链
Dec 09 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 Smarty 字符比较代码
2011/02/27 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
js格式化货币数据实现代码
2013/09/04 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
python处理大日志文件
2019/07/23 Python
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
.NET常见笔试题集
2012/12/01 面试题
国外软件测试工程师面试题
2016/12/09 面试题
校园报刊亭的创业计划书
2014/01/02 职场文书
支教自我鉴定
2014/01/18 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
小程序实现筛子抽奖
2021/05/26 Javascript
python中的装饰器该如何使用
2021/06/18 Python
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA