How to encode spaces in curl GET request URL on Linux?

The problem is like this: I would like to send a GET request using curl and the content has spaces, such as

curl "http://example.com/send?msg=hello world"

The space and the "world" will be left away if this command is executed directory on Linux.

How to encode spaces in curl request URL?

asked Apr 27, 2015 by Victor (420 points)

1 Answer

You can use the --date-urlencode option of curl:

--data-urlencode <data>

(HTTP) This posts data, similar to the other --data options with
the exception that this performs URL-encoding. (Added in 7.18.0)
To be CGI-compliant, the <data> part should begin with a name 
followed by a separator and a content specification. The <data> 
part can be passed to curl using one of the following syntaxes:

content
This will make curl URL-encode the content and pass that on. 
Just be careful so that the content doesn't contain any = or 
@ symbols, as that will then make the syntax match one of the 
other cases below!

=content
This will make curl URL-encode the content and pass that on. 
The preceding = symbol is not included in the data.

name=content
This will make curl URL-encode the content part and pass that 
on. Note that the name part is expected to be URL-encoded 
already.

@filename
This will make curl load data from the given file (including 
any newlines), URL-encode that data and pass it on in the POST.

name@filename
This will make curl load data from the given file (including any
newlines), URL-encode that data and pass it on in the POST. The 
name part gets an equal sign appended, resulting in 
name=urlencoded-file-content. Note that the name is expected to 
be URL-encoded already.

You command could be:

curl -G "http://example.com/send" --data-urlencode "msg=hello world"

Here, -G is to tell curl that the data are used in an HTTP GET request instead of the POST request that otherwise would be used. The data will be appended to the URL with a '?' separator.

answered Apr 27, 2015 by Eric Z Ma (44,280 points)
edited Apr 27, 2015 by Eric Z Ma

Please log in or register to answer this question.

Copyright © SysTutorials. User contributions licensed under cc-wiki with attribution required.
Hosted on Dreamhost

...