关于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常用函数 不错
Sep 08 Javascript
js改变文章字体大小的实例代码
Nov 27 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
AngularJS中的过滤器使用详解
Jun 16 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
JS动态插入并立即执行回调函数的方法
Apr 21 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
小程序实现留言板
Nov 02 Javascript
怎样在vue项目下添加ESLint的方法
May 16 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 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对大文件进行读取操作的实现代码
2013/01/23 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
Python递归函数定义与用法示例
2017/06/02 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
pyspark 随机森林的实现
2020/04/24 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
python 写一个性能测试工具(一)
2020/10/24 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
中班开学寄语
2014/04/04 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
交通事故私了协议书
2014/04/16 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
提档介绍信范文
2015/10/22 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
一级电子管军用接收机测评
2022/04/05 无线电