PHP: convert spaces in string into %20?
Use the rawurlencode function instead.
Use the rawurlencode function instead.
I faced the encoding half of this problem the other day. Unhappy with the available options, and after taking a look at this C sample code, i decided to roll my own C++ url-encode function: #include <cctype> #include <iomanip> #include <sstream> #include <string> using namespace std; string url_encode(const string &value) { ostringstream escaped; escaped.fill(‘0’); escaped … Read more
The answer to the question, “what am I doing wrong,” is that the shell sees the ampersand (&) and thinks that’s the end of the command (and puts it into the background). You need to quote it, which is why the answers that quoted the string work. You could just as easily run this: curl … Read more
I would always encode in UTF-8. From the Wikipedia page on percent encoding: The generic URI syntax mandates that new URI schemes that provide for the representation of character data in a URI must, in effect, represent characters from the unreserved set without translation, and should convert all other characters to bytes according to UTF-8, … Read more
For the URI query use urlencode/urldecode; for anything else use rawurlencode/rawurldecode. The difference between urlencode and rawurlencode is that urlencode encodes according to application/x-www-form-urlencoded (space is encoded with +) while rawurlencode encodes according to the plain Percent-Encoding (space is encoded with %20).
java.net.URLEncoder.encode(String s, String encoding) can help too. It follows the HTML form encoding application/x-www-form-urlencoded. URLEncoder.encode(query, “UTF-8”); On the other hand, Percent-encoding (also known as URL encoding) encodes space with %20. Colon is a reserved character, so : will still remain a colon, after encoding.
General Answer The general answer to your question is that it depends. And you get to decide by specifying what your “Content-Type” is in the HTTP headers. A value of “application/x-www-form-urlencoded” means that your POST body will need to be URL encoded just like a GET parameter string. A value of “multipart/form-data” means that you’ll … Read more
Form data (for GET or POST) is usually encoded as application/x-www-form-urlencoded: this specifies + for spaces. URLs are encoded as RFC 1738 which specifies %20. In theory I think you should have %20 before the ? and + after: example.com/foo%20bar?foo+bar
To escape the characters you want is a little more work. Example code iOS7 and above: NSString *unescaped = @”http://www”; NSString *escapedString = [unescaped stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; NSLog(@”escapedString: %@”, escapedString); NSLog output: escapedString: http%3A%2F%2Fwww The following are useful URL encoding character sets: URLFragmentAllowedCharacterSet “#%<>[\]^`{|} URLHostAllowedCharacterSet “#%/<>?@\^`{|} URLPasswordAllowedCharacterSet “#%/:<>?@[\]^`{|} URLPathAllowedCharacterSet “#%;<>?[\]^`{|} URLQueryAllowedCharacterSet “#%<>[\]^`{|} URLUserAllowedCharacterSet “#%/:<>?@[\]^` Creating a … Read more
Swift 4.2 var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) Swift 3.0 var address = “American Tourister, Abids Road, Bogulkunta, Hyderabad, Andhra Pradesh, India” let escapedAddress = address.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) let urlpath = String(format: “http://maps.googleapis.com/maps/api/geocode/json?address=\(escapedAddress)”) Use stringByAddingPercentEncodingWithAllowedCharacters: var escapedAddress = address.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) Use stringByAddingPercentEscapesUsingEncoding: Deprecated in iOS 9 and OS X v10.11 var address = “American Tourister, Abids Road, Bogulkunta, … Read more