Decode percent escapes as bytes
03Percent encoding represents one byte with two hexadecimal digits; it is not a Unicode character escape or form-field encoding.
The corrected %be%d3%be yields BE D3 BE. The diagram stops at octets; it does not claim that each byte is an independent Unicode character.
Source for this drawing: RFC 2397 · Read RFC section 3 ↗
New to this? Start hereA quick picture + helpful background
A request starts a conversation.
A client asks for a resource. A server sends a response. The method, address, headers, and status explain what that conversation means.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Erratum2009 corrects %fg to %d3. Erratum2045 changes the imported grammar name to uric. Held/reported proposals about parameter quoting are not verified corrections.
Read the updated RFC section ↗Recover bytes before interpreting their charset.
- Without ;base64, safe URL characters represent their ASCII bytes and %xx represents an octet, an eight-bit byte. Hex digits range from 0 to 9 and A to F, case-insensitively.
- Verified erratum2009 replaces invalid %fg in the Greek-charset example with %d3. The corrected payload %be%d3%be gives bytes BE D3 BE; the declared charset governs any later character interpretation.
- Verified erratum2045 corrects the imported grammar name from undefined urlchar to uric in RFC2396. Escape characters that would conflict with URL or parameter syntax; do not treat arbitrary raw spaces or quoted strings as safe URL content.
The published A%20brief%20note example yields A brief note. A plus sign is a literal plus byte here, not the space conversion used by some form encodings. The teaching decoder rejects malformed escapes rather than guessing a byte; that error UI is a chosen implementation policy. Errata3214/4124 are Held for Document Update,5923 is Reported and3360 Rejected; none is silently adopted as a verified replacement. The model does not implement a Greek or full MIME charset decoder.
Read the RFC section ↗