Jedes Zeichen, das Sie in eine [X] HTML-Datei aufnehmen können, kann problemlos in eine eingefügt werden <input name>
. Wie Allains Kommentar sagt, <input name>
wird er als enthaltend definiert. CDATA
Das einzige, was Sie dort nicht eingeben können, sind die Steuercodes und ungültigen Codepunkte, die der zugrunde liegende Standard (SGML oder XML) nicht zulässt.
Allain zitierte W3 aus der HTML4-Spezifikation:
Hinweis. Die Methode "get" beschränkt Formulardatensatzwerte auf ASCII-Zeichen. Nur die "post" -Methode (mit enctype = "multipart / form-data") wird angegeben, um den gesamten ISO10646-Zeichensatz abzudecken.
In der Praxis trifft dies jedoch nicht wirklich zu.
Die Theorie besagt, dass application/x-www-form-urlencoded
Daten keinen Mechanismus zum Angeben einer Codierung für die Namen oder Werte des Formulars haben. Daher wird die Verwendung von Nicht-ASCII-Zeichen in beiden nicht als funktionierend angegeben, und Sie sollten multipart/form-data
stattdessen POSTed verwenden.
Leider gibt in der realen Welt kein Browser eine Codierung für Felder an, selbst wenn dies theoretisch möglich wäre, und zwar in den Unterteil-Headern eines multipart/form-data
POST-Anforderungshauptteils. (Ich glaube, Mozilla hat einmal versucht, es zu implementieren, hat sich jedoch zurückgezogen, da es Server kaputt gemacht hat.)
Und kein Browser implementiert den erstaunlich komplexen und hässlichen RFC2231- Standard, der erforderlich wäre, um codierte Nicht-ASCII-Feldnamen in die Subpart-Header des Multiparts einzufügen. In jedem Fall multipart/form-data
besagt die definierte HTML-Spezifikation nicht direkt, dass RFC2231 verwendet werden sollte, und es würde wiederum Server beschädigen, wenn Sie es versuchen würden.
Die Realität sieht also so aus, dass es keine Möglichkeit gibt zu wissen, welche Codierung für die Namen und Werte in einer Formularübermittlung verwendet wird, unabhängig davon, um welche Art von Formular es sich handelt. Was Browser mit Feldnamen und Werten tun, die Nicht-ASCII-Zeichen enthalten, ist für GET und beide Arten von POST-Formularen gleich: Sie codieren sie mithilfe der Codierung der Seite, die das verwendete Formular enthält. Nicht-ASCII-GET-Formularnamen sind nicht fehlerhafter als alles andere.
DLH:
Der Name hat also einen anderen Datentyp als für andere Elemente?
Eigentlich ist das einzige Element, dessen name
Attribut nicht CDATA
ist <meta>
,. In der Attributliste der HTML4-Spezifikation finden Sie alle Verwendungsmöglichkeiten von name
; Es ist ein überladener Attributname, der viele verschiedene Bedeutungen für die verschiedenen Elemente hat. Dies wird allgemein als eine schlechte Sache angesehen.
Normalerweise vermeiden Sie dies heutzutage jedoch, name
außer in Formularfeldern (wo es sich um einen Steuerelementnamen handelt) und param
(wo es sich um eine Plugin-spezifische Parameter-ID handelt). Das sind nur zwei Bedeutungen, mit denen man sich auseinandersetzen muss. Die Verwendung von name
Elementen wie <form>
oder <a>
auf der Seite in der alten Schule sollte vermieden werden ( id
stattdessen verwenden).
name
also ein anderer Datentyp für<input>
als für andere Elemente? Interessant.