0

我使用脚本从 URL 中获取变量并对其进行解码 - “用户名”是精确的。

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

如果名称是“Jørgen-Vælle Jürgensen”,那么脚本将输出“Jørgen-Vælle Jü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));

我该怎么办??

先感谢您。

4

4 回答 4

3

decodeURIComponent

于 2011-05-24T10:33:36.893 回答
1

您需要解码网址。$.URLDecode(url)是你的朋友 =) 它是一个插件(在 jQuery 或纯 javascript 中可能有一个内置的方式,但这是谷歌的第一个热门)所以你必须下载并包含它才能工作。

于 2011-05-24T10:34:24.973 回答
0

使用 javascript decodeURIComponent 函数来解码 url。

于 2011-05-24T10:36:33.420 回答
0

代替:

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

用这个

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

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

于 2011-05-24T16:43:15.703 回答