关于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常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
js function定义函数使用心得
Apr 15 Javascript
ExtJS 下拉多选框lovcombo
May 19 Javascript
js判断变量是否未定义的代码
Mar 28 Javascript
JavaScript中操作Mysql数据库实例
Apr 02 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
Jun 08 Javascript
AngularJS Module方法详解
Dec 08 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
Angular中使用MathJax遇到的一些问题
Dec 15 Javascript
JS实现的RC4加密算法示例
Aug 16 Javascript
聊聊JS ES6中的解构
Apr 29 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表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
使用PHP编写的SVN类
2013/07/18 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
js实现微信聊天界面
2020/08/09 Javascript
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
金融行业务员的自我评价
2013/12/13 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
爱国主题班会教案
2015/08/14 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP