What Every Web Developer Must Know About URL Encoding
Stéphane Épardaud (via Ilya Grigorik):
This article describes common misconceptions about Uniform Resource Locator (URL) encoding, then attempts to clarify URL encoding for HTTP, before presenting frequent problems and their solutions.
For example:
This means that the “blue+light blue” string has to be encoded differently in the path and query parts: “http://example.com/blue+light%20blue?blue%2Blight+blue”. From there you can deduce that encoding a fully constructed URL is impossible without a syntactical awareness of the URL structure.
and:
The syntax of the URL is only meaningful before it is URL-decoded: after URL-decoding, reserved characters may appear.
Update (2013-07-13): Mike Abdullah mentions KSURLComponents, which can help with this.
Update (2013-07-16): Mike Abdullah:
But what if you want to programmatically construct a URL containing query parameters? Don’t worry, I’ve got your back again, with KSURLQueryUtilities. There you’ll find a selection of methods to go between URL (and their strings), and NSDictionary.
Update (2013-08-14): Mike Abdullah:
Most importantly, note the use of : characters in the example above. One is used after the brackets to indicate the port number. But what about this within the brackets? As we saw above, : characters must usually be escaped as part of a hostname, but for literal addresses, the brackets act as an exception to this rule.
[…]
For further complication, websites can make use of international domain names, whereby characters outside of the regular ASCII set are encoded using a system known as punycode. e.g. the domain
exämple.com
is actually addressed asxn--exmple-cua.com
. Web browsers take care of hiding this detail from users by presenting (and accepting) the unicode form of such domains.
2 Comments RSS · Twitter
[...] of great stuff, including Base64, NSURLComponents (sorely needed), blink and smile detection, barcode scanning, and access to Safari’s Reading List. [...]
[…] of great stuff, including Base64, NSURLComponents (sorely needed), blink and smile detection, barcode scanning, and access to Safari’s Reading List. […]