Tach!
Äh??? Könntest Du ein Beispiel zeigen, wie man ein Array exakt und normgerecht urlencoden müsste? PHP-proprietäre Angaben mal beiseite, dass die nicht normgerecht sind hast Du ja schon vorher angemerkt.
Das war für mich nur eine Aussage. Der Nachweis in Form eines Verweises auf die Norm steht ja noch aus.
Ich vermute mal, dass Array oder irgendeine andere Form von Datentyp nicht weiter relevant sind für die Norm. Wenn ich etwas dazu erfinden müsste, würde ich mir zwar Gedanken über die Anforderungen machen, die die Systeme haben könnten, aber ansonsten eine agnostische Lösung suchen. Key-Value jeweils als Strings, ohne Einschränkungen bei den Keys, also auch Dopplungen zulassend, ist ein sehr einfaches Prinzip und trotzdem oder gerade deswegen sehr flexibel. Was die Systeme zum Weiterverarbeiten draus machen, ob sie Arrays bilden oder nicht, wäre mir sowas von egal. Das ist deren Problem, wie sie im Innern damit umgehen und was sie da für Möglichkeiten haben. Zeichenfolgen werden sie wohl alle verarbeiten können, ebenso das Konvertieren dieser in jede ihnen genehme Form. Wenn PHP aus foo[] ein Array macht ... soll es doch, wer hat denn dabei Nachteile? Aus Browsersicht sehe ich keinen prinzipiellen Unterschied zwischen
<input name="foo[]">...<input name="foo[]">
und
<input name="foo">...<input name="foo">
oder auch
<input name="无论什么">...<input name="无论什么">
Ein Name ist ein Name. In HTML4.01 ist das ein CDATA-Wert, der nur sehr wenige Einschränkungen im Bereich Steuerzeichen und Whitespace hat. Die HTML5-Spec ist mir zu mühsam, da kann es aber auch nicht schlechter geworden sein.
dedlfix.