接下来我将详细讲解“jquery获取URL中参数解决中文乱码问题的两种方法”的完整攻略。
问题描述
由于中国所有的编码都是基于 Unicode,因此 UTF-8 编码也经过传递被应用在了 URL 地址中。而浏览器在向服务器传递请求的时候,会自动将请求参数进行编码(包括中文),所以在 URL 中看起来是一堆乱码,而我们在使用 jQuery 获取 URL 中的参数时,需要进行解码。
解决方法
在获取 URL 参数时,我们需要对 URL 中的参数值进行解码。
方法一:使用decodeURI()
函数
decodeURI()
函数能够解码完整的 URL。如果一个完整的 URL 包含了中文,我们必须使用decodeURI()
函数进行解码。
以下是代码示例:
//获取URL中参数的值,中文解码
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){
return decodeURI(pair[1]);
}
}
return(false);
}
当然,在以上代码中,我们可以使用decodeURIComponent()
函数来替代decodeURI()
函数。
方法二:使用一个自定义的解码函数
自定义函数的基本思路是使用正则表达式来查找 URL 中的中文,并将其转换为对应的编码。
以下是代码示例:
//自定义函数解密中文
function utf8_decode(str) {
var res = "";
var len = str.length;
for (var i = 0; i < len;) {
var code = str.charCodeAt(i);
var b;
if (code < 128) {
res += str[i++];
}
else if (code < 224) {
b = str.charCodeAt(i + 1);
res += String.fromCharCode(((code & 0x1F) << 6) | (b & 0x3F));
i += 2;
}
else if (code < 240) {
b1 = str.charCodeAt(i + 1), b2 = str.charCodeAt(i + 2);
res += String.fromCharCode(((code & 0x0F) << 12) | ((b1 & 0x3F) << 6) | (b2 & 0x3F));
i += 3;
}
else {
alert("解密错误");
i++;
}
}
return res;
}
//获取URL中参数的值,中文解密
function getParameter(paraName)
{
var url = document.location.toString();
var arrObj = url.split("?");
if (arrObj.length > 1) {
var arrPara = arrObj[1].split("&");
var arr;
for (var i = 0; i < arrPara.length; i++) {
arr = arrPara[i].split("=");
if (arr != null && arr[0] == paraName) {
return utf8_decode(arr[1]);
}
}
return "";
}
else {
return "";
}
}
以上就是“jquery获取URL中参数解决中文乱码问题的两种方法”的详细攻略了,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery获取URL中参数解决中文乱码问题的两种方法 - Python技术站