[whatwg/url] Use different percent-encode sets for simple/non-simple scheme fragment encoding (#597)

This is similar to issue #348

I've noticed some odd things about fragment encoding in different browsers.  All browsers agree `new URL("http://example.com/# <>")` should parse to `http://example.com/#%20%3C%3E ` but no two browsers agree on what `new URL("data://example.com/# <>")`

In Firefox 88 it becomes `data://example.com/#%20<>`
In Chrome 90 it becomes `data://example.com/# <>`
In Safari 14.1 it becomes `data://example.com/#%20%3C%3E`

Safari's adoption of the behavior of the current specification caused at least one compatibility issue in https://bugs.webkit.org/show_bug.cgi?id=225340 and we are now convinced that we need a different set of characters to be encoded in special and non-special URL fragments, depending on the scheme.  Once my bug is fixed in WebKit all browsers will have different encode sets for special and non-special URL fragments so the specification should reflect this reality.

I propose we use `fragment percent-encode set` if url is special, otherwise the `C0 control percent-encode set` in https://url.spec.whatwg.org/#fragment-state step 1.3.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/url/issues/597

Received on Tuesday, 4 May 2021 23:33:09 UTC