2017-02-19 1 views
0

Ich habe die folgende URL:Sonderzeichen in URL - Notwendigkeit, die Kapital Ø bekommen

my.site/?param1=Økonomi&param2=Penger 

ich diese Funktion mit dem Parameter Wert erhalten:

function getQueryStringValue(url, key) { 
    var params = {}; 
    var url_params = url.split("?", 2); 

    if (url_params.length > 1) { 
     var param_list = url_params[1].split("&"); 
     param_list.map(function (param_str) { 
      var kv = param_str.split("=", 2); 
      params[kv[0]] = kv[1]; 
     }); 
    } 
    return (key in params)? decodeURIComponent(params[key]) : '' 
} 

Wenn die Ergebnisse der Anmeldung diese sind die Werte zurückgegeben: param1 = %C3%98konomi und param2 = Penger

Wenn dies gegen meine Dataset abfragt, ich keine Übereinstimmung der Ergebnisse genannt bekommen Økonomi mit einer Hauptstadt Ø. Wenn ich die Daten zu økonomi ändere, bekomme ich eine Übereinstimmung.

Also gibt der codierte URI-Wert %C3%98 nicht Ø zurück? Wie kann ich sicherstellen, dass es geht?

+0

Was bedeutet 'console.log (url)' show in 'getQueryStringValue'? 'decodeURIComponent ('% C3% 98')' sollte definitiv ''Ø'' sein. – Ryan

+0

Es zeigt '% C3% 98' –

+0

Ihre gesamte URL ist'% C3% 98'? Interessant. Wie rufen Sie 'getQueryStringValue' auf und überprüfen das Ergebnis? – Ryan

Antwort

0

Sie haben, dies zu tun:

const getQueryStringValue = (url, key) => 
 
    ((decodeURIComponent(url).split('?')[1] || '').match(new RegExp(`${key}=([^&]*)`)) || [,null])[1] 
 

 
const url = encodeURIComponent('my.site/?param1=Økonomi&param2=Penger') 
 
console.log(getQueryStringValue(url, 'param1')) 
 
console.log(getQueryStringValue(url, 'param2')) 
 
console.log(getQueryStringValue('my.site/', 'param2')) 
 
console.log(getQueryStringValue('my.site/?param1=Økonomi&param2=Penger', 'param3'))

Browser kodieren URL encodeUriComponent Funktion und haben Sie es zu entschlüsseln.

console.log(decodeURIComponent('%C3%98'))