将字符串转换成gb2312或者utf-8编码的参数(js版) |
本文标签:字符串,gb2312,utf-8 在很多时候,我们直接在url中传递中文参数时,读到的中文都是乱码,那么我们应该怎么将这些参数转换呢? 下面我们来介绍一下方法 1、我们新建一个 UrlEncode.js 然后将下面的代码拷贝进去 复制代码 代码如下: //JS版的Server.UrlEncode编码函数 String.prototype.UrlEncodeGB2312 = function () { var str = this; str = str.replace(/./g, function (sHex) { window.EnCodeStr = ""; window.sHex = sHex; window.execScript(window.EnCodeStr=Hex(Asc(window.sHex)), "vbscript"); return window.EnCodeStr.replace(/../g, "%{blogcontent}amp;"); }); return str; } String.prototype.UrlEncode = function () { var s = escape(this); var sa = s.split("%"); var retV = "", retE = ""; if (sa[0] != "") { retV = sa[0]; } for (var i = 1; i < sa.length; i++) { if (sa[i].substring(0, 1) == "u") { retV += Hex2Utf8(Str2Hex(sa[i].substring(1, 5))); if (sa[i].length > 4) retV += sa[i].substring(5); } else retV += "%" + sa[i]; } return retV; } function Str2Hex(s) { var c = ""; var n; var ss = "0123456789ABCDEF"; var digS = ""; for (var i = 0; i < s.length; i++) { c = s.charAt(i); n = ss.indexOf(c); digS += Dec2Dig(eval(n)); } return digS; } function Dec2Dig(n1) { var s = ""; var n2 = 0; for (var i = 0; i < 4; i++) { n2 = Math.pow(2, 3 – i); if (n1 >= n2) { s += 1; n1 = n1 – n2; } else s += 0; } return s; } function Dig2Dec(s) { var retV = 0; if (s.length == 4) { for (var i = 0; i < 4; i++) { retV += eval(s.charAt(i)) * Math.pow(2, 3 – i); } return retV; } return -1; } function Hex2Utf8(s) { var retS = ""; var tempS = ""; var ss = ""; if (s.length == 16) { tempS = "1110" + s.substring(0, 4); tempS += "10" + s.substring(4, 10); tempS += "10" + s.substring(10, 16); var sss = "0123456789ABCDEF"; for (var i = 0; i < 3; i++) { retS += "%"; ss = tempS.substring(i * 8, (eval(i) + 1) * 8); retS += sss.charAt(Dig2Dec(ss.substring(0, 4))); retS += sss.charAt(Dig2Dec(ss.substring(4, 8))); } return retS; } return ""; } 2、使用方法,当然就是我们的((字符串.UrlEncode() )就可以将字符串转换为utf-8编码的url参数((字符串.UrlEncodeGB2312() )就可把字符串转换成gb2312编码的参数,很好吧,O(∩_∩)O哈哈' |