幽灵资源网 Design By www.bzswh.com
关于在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需再刷新一下页面才能执行]
标签:
urlencode,编码,解码

幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。