1

Node.js内querystring.stringify()で、URLで使用するためにオブジェクトをクエリ文字列にエンコードするために使用しています。スペースを含む値は、としてエンコードされ%20ます。

私は、RFC3986+より前に一般的に行われていたように、としてエンコードされたスペースのみを受け入れる、特に厄介なWebサービスを使用しています。

スペースを次のようにエンコードするようにクエリ文字列のオプションを設定する方法はあります+か?

現在、のすべてのインスタンスを.replace()に置き換えるために単に実行していますが、事前に設定できるオプションがある場合、これは少し面倒です。%20+

4

3 に答える 3

1

デフォルトでこれを実行しているライブラリは考えられません。残念ながら、他のオプションはおそらくすでに実行していることを実行するか、使用するため、実装がこれを実行するためのより効率的な方法である可能性があります。コンパイルされていない純粋なJavaScriptコードが遅くなります。

WebサービスプロバイダーにRFCに従うように依頼するのはどうですか?

于 2012-05-23T14:19:41.847 に答える
1

https://github.com/kvz/phpjsは、すべてのphp関数を提供するnode.jsパッケージです。これを書いている時点でのhttp_build_query実装は、urlencode(クエリ文字列にはスペースではなく+が含まれています)のみをサポートしていますが、間もなくenc_typeパラメーター/ rawurlencode(スペースの場合は%20)が含まれるようになることを願っています。

http://php.net/http_build_queryを参照してください。

RFC1738(+)は、どちらの方法でもデフォルトのenc_typeになるため、目的に応じてすぐに使用できます。

于 2015-02-17T19:28:37.570 に答える
1

まだこの問題に直面している人がいる場合は、「qs」npmパッケージにスペースを+としてエンコードする機能があります

qs.stringify({ a: 'b c' }, { format : 'RFC1738' })
于 2021-09-30T13:16:20.033 に答える