1

在 Node.js 中,我使用querystring.stringify()将对象编码为查询字符串以在 URL 中使用。有空格的值被编码为%20.

我正在使用一个特别挑剔的 Web 服务,它只接受编码为 的空格,就像在RFC3986+之前通常所做的那样。

有没有办法为查询字符串设置一个选项,以便将空格编码为+

目前我只是在做一个.replace()替换所有实例的%20with +,但如果有一个选项我可以提前设置,这有点乏味。

4

3 回答 3

1

https://github.com/kvz/phpjs是一个node.js 包,提供了所有的php 功能。在撰写本文时,http_build_query 实现仅支持 urlencode(查询字符串包含 + 而不是空格),但希望很快将包含 enc_type 参数 / rawurlencode(空格的 %20)。

请参阅http://php.net/http_build_query

无论哪种方式,RFC1738(+'s)都将是默认的 enc_type,因此您可以立即将其用于您的目的。

于 2015-02-17T19:28:37.570 回答
1

我想不出任何库默认会这样做,不幸的是,我会说你的实现可能是更有效的方法,因为任何其他选项可能会做你已经在做的事情,或者会使用较慢的非编译纯 JavaScript 代码。

要求 Web 服务提供商遵循 RFC 怎么样?

于 2012-05-23T14:19:41.847 回答
1

如果有人仍然面临这个问题,“qs”npm 包具有将空格编码为 + 的功能

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