广树
2025-01-31 20:37
@tongnixcv:撤了吗?
作者:广树时间:2018-04-15 20:24:39分类:PHP
因为要在地址栏里传中文参数,但是地址栏传中文参数是很危险的一件事情,我就用urlencode()转了下。
但是本以为JS的 encodeURI()能解码,但是很可惜不行,于是我找到了可以给PHP urlencode()生成的编码所对应的JS解码。
function urldecode(encodedString){ var output = encodedString; var binVal, thisString; var myregexp = /(%[^%]{2})/; function utf8to16(str) { var out, i, len, c; var char2, char3; out = ""; len = str.length; i = 0; while(i < len) { c = str.charCodeAt(i++); switch(c >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: out += str.charAt(i-1); break; case 12: case 13: char2 = str.charCodeAt(i++); out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); break; case 14: char2 = str.charCodeAt(i++); char3 = str.charCodeAt(i++); out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); break; } } return out; } while((match = myregexp.exec(output)) != null && match.length > 1 && match[1] != '') { binVal = parseInt(match[1].substr(1),16); thisString = String.fromCharCode(binVal); output = output.replace(match[1], thisString); } //output = utf8to16(output); output = output.replace(/\\+/g, " "); output = utf8to16(output); return output; }