2017-02-19 13 views
0

を取得する必要があります私は、次のURLがあります。結果をログに記録する場合特殊文字 - 資本Ø

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]) : '' 
} 

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

を私はパラメータの値を取得するには、この機能を使用しています param1 = %C3%98konomiparam2 = Penger

これを私のデータセットに対して照会すると、という名前の結果が得られませんは資本金がØです。データをøkonomiに変更すると、私は一致します。

したがって、符号化されたURIの値%C3%98Øを返しませんか?どうすればそれを確実にすることができますか?

+0

'getQueryStringValue'で' 'ショーにconsole.log(URL)は何をしますか? 'decodeURIComponent( '%C3%98')は間違いなく' 'Ø''でなければなりません。 – Ryan

+0

'%C3%98'を表示 –

+0

URL全体が'%C3%98'ですか?面白い。どのように 'getQueryStringValue'を呼び出して結果を確認していますか? – Ryan

答えて

0

あなたはこれをしなければならない。

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'))

ブラウザはencodeUriComponent機能を使用してURLをエンコードし、あなたはそれをデコードする必要があります。

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