JSjavascript实现url编码和url解码(urlEncodeurlDecode)本⽂转⾃:转载请保留。
表单通过get⽅式提交中⽂数据时,提交的中⽂会被转化为类似“%CC%EC%BF%D5”的编码,⽐如使⽤百度搜索时,中⽂关键词就会被转换,如何把url编码恢复成原来的汉字呢?使⽤PHP中的Urldecode函数可以轻易实现这个功能,但是如果是静态页⾯呢?这⾥可以使⽤下⾯的JAVASCRIPT函数来进⾏url解码。
以下是参考代码,新建⼀个html页⾯,负责以下代码到⾥⾯就可以看到效果:------------------------------------------<script language="javascript" type="text/javascript">function UnicodeChr() {return'00A4,00A7,00A8,00B0,00B1,00B7,00D7,00E0,00E1,00E8,00E9,00EA,00EC,00ED,00F2,00F3,00F7,00F9,00FA,00FC,0101,0113,011B,012B,014D,016B,01CE,01D0,01D2,01D4,01D6,01D8,01DA,0 }function AnsicodeChr() {return'A1E8,A1EC,A1A7,A1E3,A1C0,A1A4,A1C1,A8A4,A8A2,A8A8,A8A6,A8BA,A8AC,A8AA,A8B0,A8AE,A1C2,A8B4,A8B2,A8B9,A8A1,A8A5,A8A7,A8A9,A8AD,A8B1,A8A3,A8AB,A8AF,A8B3,A8B5,A8B }function UnicodeToAnsi(chrCode) {var chrHex = chrCode.toString(16);chrHex = "000" + chrHex.toUpperCase();chrHex = chrHex.substr(chrHex.length - 4);var i = UnicodeChr().indexOf(chrHex);if (i != -1) {chrHex = AnsicodeChr().substr(i, 4);}return parseInt(chrHex, 16);}function AnsiToUnicode(chrCode) {var chrHex = chrCode.toString(16);chrHex = "000" + chrHex.toUpperCase();chrHex = chrHex.substr(chrHex.length - 4);var i = AnsicodeChr().indexOf(chrHex);if (i != -1) {chrHex = UnicodeChr().substr(i, 4);}return parseInt(chrHex, 16);}function str2asc(str) {var n = UnicodeToAnsi(str.charCodeAt(0));var s = n.toString(16);return s.toUpperCase();}function asc2str(code) {var n = AnsiToUnicode(code);return String.fromCharCode(n);}//URL加密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;}//URL解码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); //alert(asc);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></head><body><input id="button1" type="button" value="url解码" onclick="javascript:alert(urlDecode('%C6%A4%D0%AC'));"/> <input id="button2" type="button" value="url编码" onclick="javascript:alert(urlEncode('⽪鞋'));"/></body></html>----------------------------------------------------------------------以上就是javascript实现url编码/url解码(urlEncode/urlDecode)的demo,希望能对⼤家有所帮助。