2011-05-24 59 views
0

我使用脚本从URL获取一个变量并对其进行解码 - “userName”将被精简。jQuery:来自URL的变量,带有字符和什么不是

但是,该脚本仅适用于英文字符,而不适用于丹麦语或其他拉丁字符。我怎么能通过这个?

如果名称是“耶尔 - Vælle恩森”脚本将输出“Jørgen-VÃ|lleJürgensen” ......安静不我的预期...... :-)

脚本:

//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)); 

我该怎么做?

预先感谢您。

回答

0

相反的:

$(".userName").text($.URLDecode(userName)); 

使用此

$(".userName").text(decodeURI(userName)+ ""); 

答案是只使用JavaScript,这使得它非常简单。

1

您需要decode的URL。 $.URLDecode(url)是你的朋友=)它是一个插件(可能有一个内置的方式在jQuery或纯JavaScript,但这是第一次在谷歌),所以你必须下载并包括它的工作。

+0

现在我遇到了一个问题(丹麦字符,你知道我怎么能“翻译”它们吗? – 2011-05-24 16:31:23

0

使用javascript decodeURIComponent函数来解码url。