Ein Nachtrag:
tatsächlich kann ich im href-Attribut eines a Elements auch URLs eintragen, die deutlich weniger codiert sind. Ich kann dem href-Attribut auch diese URL zuweisen (Zeilenumbrüche von mir zur Lesbarkeit):
…/new
?message[problematic_site]=https://wiki.selfhtml.org/wiki/Bildschirmgröße
&message[subject]=Frage+zum+Wiki-Artikel+„Bildschirmgröße“?
und das funktioniert - obwohl es nicht ganz richtig ist (und es den Artikel nicht gibt). Die eckigen Klammern sind wurden 2005 von rfc3986 als "general delimiters" im Query-String verboten, Doppelpunkt und Schrägstrich hingegen sind erlaubt. Da müsste also eigentlich %5B und %5D stehen. Warum [] verboten ist, erschließt sich mir nicht, die markieren eigentlich nur eine IPv6 im Host-Teil.
Die HTML Spec besagt jedenfalls, dass alle Unicode-Codepoints ab \u00a0 in URLs zulässig sind (was heißt: dort, wo URLs in einem HTML-Attribut abgelegt werden) und nicht maskiert werden müssen. Auf der Leitung werden daraus trotzdem wieder die %-codierten UTF-8 Bytes - zumindest sagt das mein Netzwerk-Trace.
All das ignoriert URLSearchParams, es codiert gnadenlos jedes Zeichen, das im UTF-8 mehr als 2 Bytes braucht, in Prozentform. Um rückwärtskompatibel zu Uralt-Servern zu sein, nehme ich an, und um das Internetmantra zu befolgen: „Folge beim Schreiben strikt den Regeln und verzeihe beim Lesen möglichst viele Fehler.“
Rolf
sumpsi - posui - obstruxi