53

これは簡単な作業のはずですが、解決策が見つからないようです。

次のようなクエリ文字列パラメーターとして渡される基本的な文字列がありますThis+is+a+message+with+spaces。JavaScript を使用してそのパラメータを にデコードしたいのですが、デコードThis is a message with spacesできないようです。

試してみましdecodeURI('This+is+a+message+with+spaces')たが、結果にはまだ+兆候が含まれています。

4

5 に答える 5

27

プラス記号はエンコード/デコードされません。デコード機能が機能することを確認するには、最初にエンコードされたURIを渡す必要があります。見てください:

encodeURI( "http://www.foo.com/bar?foo=foo bar jar" )

生成されます:http://www.foo.com/bar?foo=foo%20bar%20jarつまり、エンコードされたURI。

decodeURI( "http://www.foo.com/bar?foo=foo%20bar%20jar" )

生成されます:http://www.foo.com/bar?foo=foo bar jarつまり、デコードされたURI。

于 2012-08-20T18:07:56.893 に答える
1

必要なエンコード/デコードをサポートする独自の文字列メソッドを作成しました。これらのメソッドは + のエンコードとデコードを適切に処理し、文字列にプラス記号 (+) を含めても、元のスペースを + としてエンコードすることができます。

String.prototype.plusEncode = function() {
    return encodeURIComponent(this).replace(/\%20/gm,"+");
}

String.prototype.plusDecode = function() {
    return decodeURIComponent(this.replace(/\+/gm,"%20"));
}
于 2015-07-27T18:48:50.280 に答える