[JS]JavaScript中实现ANSI(gb2312)的URL编码与解码URLEncode、UR
JavaScript中实现ANSI(gb2312)的URL编码与解码URLEncode、URLDecode
encodeURI 和 encodeURIComponent 是按 UTF-8 对 URL 编码的,下面的代码是按 ANSI 对 URL进行编码和解码的。使用了两个 vbscript 自定义函数,请参见 JavaScript 函数如何调用 VBScript 函数。
以下整理自 Moocky.Mark's Blog。
- <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">
- <!--
- 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>
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...