The spec doesn't distinguish too much, but in practice, the following
distinction is important:
- Domain name part: punycode for backwards-compatibility, NFKC forced
- Path/files: standard UTF-8 -> %HH, NFC recommended
- Query parts: backwards compatibility: use encoding of page, any
normalization possible