我们在前端开发中,经常会遇到通过URL传递参数的情况,如这样:
localhost:8000/apple?key1=1&key2=2
然后我们可以通过location
对象中的search
属性获取上面的参数,但当你传递的值是汉字的时候,就会出现这种情况
如这样的
UTF-8
字符串,我们用起来就会很尴尬,这里为大家提供一个方法,将这样的UTF-8
编码转换回我们原先的汉字
//将编码转换成字符
function utf8ToChar(str) {
var iCode, iCode1, iCode2;
iCode = parseInt("0x" + str.substr(1, 2));
iCode1 = parseInt("0x" + str.substr(4, 2));
iCode2 = parseInt("0x" + str.substr(7, 2));
return String.fromCharCode(((iCode & 0x0F) << 12) | ((iCode1 & 0x3F) << 6) | (iCode2 & 0x3F));
}
//将URL中的UTF-8字符串转成中文字符串
function getCharFromUtf8(str) {
var cstr = "";
var nOffset = 0;
if (str == "")
return "";
str = str.toLowerCase();
nOffset = str.indexOf("%e");
if (nOffset == -1)
return str;
while (nOffset != -1) {
cstr += str.substr(0, nOffset);
str = str.substr(nOffset, str.length - nOffset);
if (str == "" || str.length < 9)
return cstr;
cstr += utf8ToChar(str.substr(0, 9));
str = str.substr(9, str.length - 9);
nOffset = str.indexOf("%e");
}
return cstr + str;
}
好了,拿去用吧!
网友评论