2012-05-23 30 views
1

在Node.js中,我使用querystring.stringify()將對象編碼爲查詢字符串以便在URL中使用。有空格的值編碼爲%20Node.js RFC3986之前URL的URL編碼(使用+ vs%20)

我正在使用一個特別挑剔的web服務,它只接受編碼爲+的空格,正如以前通常在RFC3986之前完成的那樣。

有沒有一種方法,以便它編碼空格作爲+來設置的查詢字符串的選項?

目前,我只是做了.replace()+取代的%20所有實例,但如果有我可以提前設置的選項,這是一個有點乏味。

+0

我想不出任何默認的庫,不幸的是,我會說你的實現可能是更有效的方法來做到這一點。那麼要求Web服務提供商遵循RFC? – Pierre

+0

服務提供商正在努力。沒問題,我現在堅持'.replace()'。如果您想將您的評論發佈爲答案,我會將其標記爲此問題的答案。謝謝。 – Brad

+0

完成它。謝謝。 – Pierre

回答

1

我想不出任何默認的庫,不幸的是,我會說你的實現可能是更有效的方法來做到這一點,因爲任何其他選項可能會做你已經做的事情,否則會使用較慢的非編譯純JavaScript代碼。

如何讓Web服務提供商遵循RFC?

1

https://github.com/kvz/phpjs是一個node.js包,它提供了所有的php函數。在編寫本文時,http_build_query實現僅支持urlencode(查詢字符串包含+而不是空格),但希望很快將包含enc_type參數/ rawurlencode(空格爲%20)。

參見http://php.net/http_build_query

無論哪種方式,RFC1738(+)都將成爲默認的enc_type,因此您可以立即將它用於您的目的。