作家
登录

Javascript下的urlencode编码解码方法附decodeURIComponent

作者: 来源:www.28hudong.com 2013-03-30 01:38:58 阅读 我要评论

关于在ASP(Server.UrlEncode)、PHP(urlencode())函数编码结果,或是经过asp、php等动态语言直接写入COOKIES的中文字符,用JS读取的时候,都会碰到一个编码的问题,那就是最终字符串被urlencode编码了,而又时有需要从JS在客户端去读取这些数据。而本文,就大概说说如何在js中通过系统自带的函数去解决这个问题。 而相信碰到过此问题的朋友应该都有所了解,目前网络上流行一些js下的自定义函数去解决这个问题,如说vbscript(URLDecode())、javascript(UrlDecode())等。而这两个函数,都无法很好的与asp(Server.UrlEncode)、php(urlencode())这两个函数相互通讯。 关于vbscript(function URLDecode())、javascript(function UrlDecode())在本文最后也会转载出来。 而本文的主角就是javascript(UrlDecodedecodeURIComponent()),这个函数名称实在太常了,个人真的不太了解,毕竟js的系统函数很多,很容易遗漏。烦恼在偶然间发现了这个函数! 编码函数:encodeURIComponent() 解码函数:decodeURIComponent() decodeURIComponent()语法 复制代码 代码如下: decodeURIComponent(URIstring) 参 数:(URIstring)必需。一个字符串,含有编码 URI 组件或其他要解码的文本。 返回值:URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。 实例: 复制代码 代码如下: <script type="text/javascript"> var test1="烦恼"; var test2="%E7%83%A6%E6%81%BC"; document.write("编码(原="+test1+"):"+encodeURIComponent(test1)+ "<br />"); document.write("解码(原="+test2+"):"+decodeURIComponent(test2)); </script> 结果: 复制代码 代码如下: 编码(原=烦恼):%E7%83%A6%E6%81%BC 解码(原=%E7%83%A6%E6%81%BC):烦恼 注意:本文只在UTF-8编码环境下测试。因为在不同编码环境下,asp(Server.UrlEncode)所编译后的代码好像不同,有待测试! 附转载: vbscript(function URLDecode()) 复制代码 代码如下: <script type="text/VBscript"> <!-- Function URLDecode(enStr) dim deStr,strSpecial dim c,i,v deStr="" strSpecial="!""#$%&'()*+,.-_/:;<=>?@[]^`{|}~%" for i=1 to len(enStr) c=Mid(enStr,i,1) if c="%" then v=eval("&h"+Mid(enStr,i+1,2)) if inStr(strSpecial,chr(v))>0 then deStr=deStr&chr(v) i=i+2 else v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2)) deStr=deStr & chr(v) i=i+5 end if else if c="+" then deStr=deStr&" " else deStr=deStr&c end if end if next URLDecode=deStr End function //--> </script> javascript(function UrlDecode())其实还是柔和使用了vbscript,好像在javascript环境中,对于asc、hex、chr相关的转换,如 str.charCodeAt(0).toString(16) 及 String.fromCharCode(str) 在不同编码下,对于中文的编码结果还不统一。 比如: vbscript str2asc/asc2str 复制代码 代码如下: <script type="text/vbscript"> Function str2asc(strstr) str2asc = hex(asc(strstr)) End Function Function asc2str(ascasc) asc2str = chr(ascasc) End Function MsgBox str2asc("a") MsgBox asc2str("&H61")'16进制转的61 转到 10进制就是 97 </script> javascript str2asc/asc2str 复制代码 代码如下: <script type="text/javascript"> function str2asc(str){ return str.charCodeAt(0).toString(16); } function asc2str(str){ return String.fromCharCode(str); } alert(str2asc("a"));// alert(asc2str("0x61"));// </script> 演示: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  推荐阅读

  Javascript 中的 && 和 || 使用小结

普通情况下的 && 和 || 比较简单,这里不进行讨论。 准备两个对象用于下面的讨论。 复制代码 代码如下: var alice = { name: "alice", toString: function () { return this.name; } } var smith = { name: "smith>>>详细阅读


本文标题:Javascript下的urlencode编码解码方法附decodeURIComponent

地址:http://www.17bianji.com/kaifa2/JS/26544.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)