It seems that Plug.Conn.Query.encode() converts the space character to “+”. From what I can tell, that is an old (sub) standard for URL param encoding.
You might use :http_uri.encode/1 to escape " " with "%20".
Plug.Conn.Query.encode/1 behaves this way because of URI.encode_www_form/1, which intentionally replaces %20 with +, which is valid in application/x-www-form-urlencoded.