Любой символ, который вы можете включить в файл [X] HTML, можно поместить в файл <input name>. Как говорится в комментарии Аллена, <input name>он определяется как содержащий CDATA, поэтому единственное, что вы не можете вставить туда, - это управляющие коды и недопустимые кодовые точки, которые запрещены базовым стандартом (SGML или XML).
Аллен процитировал W3 из спецификации HTML4:
Запись. Метод "get" ограничивает значения набора данных формы до символов ASCII. Только метод "post" (с enctype = "multipart / form-data") указан для охвата всего набора символов ISO10646.
Однако на практике это не совсем так.
Теоретически application/x-www-form-urlencodedданные не имеют механизма для указания кодировки для имен или значений формы, поэтому использование не-ASCII символов в любом из них «не указано» как работающее, и multipart/form-dataвместо этого вы должны использовать POSTed .
К сожалению, в реальном мире ни один браузер не определяет кодировку для полей, даже если теоретически это возможно, в заголовках подчастей multipart/form-dataтела запроса POST. (Я считаю, что Mozilla однажды пыталась реализовать это, но отказалась, поскольку сломала серверы.)
И ни один браузер не реализует удивительно сложный и уродливый стандарт RFC2231, который был бы необходим для вставки закодированных имен полей, отличных от ASCII, в заголовки подразделов multipart. В любом случае, в спецификации HTML multipart/form-dataпрямо не говорится, что следует использовать RFC2231, и, опять же, это сломает серверы, если вы попытаетесь.
Таким образом, на самом деле ситуация такова, что невозможно узнать, какая кодировка используется для имен и значений при отправке формы, независимо от того, какой это тип формы. То, что браузеры будут делать с именами полей и значениями, содержащими символы, отличные от ASCII, одинаково для GET и обоих типов формы POST: он кодирует их, используя кодировку страницы, содержащей используемую форму. Имена форм GET, отличные от ASCII, сломаны не больше, чем все остальное.
DLH:
Значит, имя имеет другой тип данных, чем другие элементы?
Фактически единственный элемент, у которого нет nameатрибута, CDATAесть <meta>. См. Список атрибутов спецификации HTML4 для всех различных вариантов использования name; это имя перегруженного атрибута, имеющее много разных значений для разных элементов. Обычно это считается плохим.
Однако, как правило, в наши дни вы избегаете, nameза исключением полей формы (где это имя элемента управления) и param(где это идентификатор параметра, специфичный для плагина). Это только два значения, с которыми нужно бороться. Следует избегать использования старой школы nameдля идентификации таких элементов, как <form>или <a>на странице (используйте idвместо этого).
nameесть ли другой тип данных,<input>чем для других элементов? Интересно.