我使用脚本从URL中获取一个变量并对其进行解码-"userName"是精确的。
然而,该脚本只适用于英文字符,而不适用于丹麦语或其他拉丁字符。我怎么能通过这个?
如果名称为"Jørgen-Vælle Jürgensen",则脚本将输出"Jârgen-V-ëlle Jâ¼rgense"。。。并没有像我所期望的那样安静…:-)
脚本:
//Get the variable userName from URL
$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
while(x<c.length){var m=r.exec(c.substr(x));
if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
}else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){b=parseInt(m[1].substr(1),16);
t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});
$.extend({
getUrlVars: function () {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function (name) {
return $.getUrlVars()[name];
}
});
_allVars = $.getUrlVars();
var userName = _allVars.userName;
$(".userName").text($.URLDecode(userName));
我该怎么办??
提前谢谢。
请参阅decodeURIComponent
您需要解码url。$.URLDecode(url)
是你的朋友=)它是一个插件(jQuery或纯javascript中可能有内置的方法,但这是谷歌上的第一个插件),所以你必须下载并包含它才能工作。
使用javascript decodeURIComponent函数对url进行解码。
而不是:
$(".userName").text($.URLDecode(userName));
使用此
$(".userName").text(decodeURI(userName)+ "");
答案是只使用JavaScript,这使得它非常简单。