What percent-encoding is actually solving
A URL is ultimately meant to be a compact, transportable piece of text that works reliably across browsers, servers, email clients, and countless other systems, many of which historically only handled a narrow set of ASCII characters safely. Percent-encoding converts anything outside that safe set, plus any reserved character being used as literal content, into a standardized %XX format based on the character's UTF-8 byte representation, guaranteeing the resulting string is unambiguous and safe to pass around regardless of what system handles it.
The mistakes that actually break encoded URLs
Double-encoding β running percent-encoding on a string that has already been percent-encoded β is one of the most common real-world bugs, since it turns an existing % into %25, silently corrupting the URL in a way that is not obvious just by looking at it. The other frequent mix-up is treating + and %20 as interchangeable everywhere; + only means "space" inside form-encoded query data, and using it in a URL path or elsewhere can be misread as a literal plus sign instead of a space.
Frequently Asked Questions
Why does a single Korean, Japanese, or Chinese character turn into a long string of percent signs when encoded?
Because those characters fall outside the basic ASCII range and are represented by multiple bytes in UTF-8 β commonly three bytes each for many CJK characters β and every one of those bytes gets its own separate %XX sequence, so a short string of non-Latin text can expand into a much longer encoded string.
What is the actual difference between %20 and + for representing a space?
%20 is the general-purpose percent-encoding for a space and is valid anywhere in a URL. The + symbol representing a space is a narrower, older convention that only applies within application/x-www-form-urlencoded form data, so using + outside that specific context can be misinterpreted as a literal plus character.