Будь-який символ, який ви можете включити в HTML-файл [X], чудово вставити в <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, у заголовки підрозділів багаточастинної частини. У будь-якому випадку, специфікація HTML, яка визначає multipart/form-data, прямо не говорить про те, що слід використовувати RFC2231, і, знову ж таки, це призведе до поломки серверів, якщо ви спробуєте.
Тож реальність ситуації полягає в тому, що неможливо дізнатися, яке кодування використовується для імен та значень у поданні форми, незалежно від того, якого типу це форма. Те, що браузери будуть робити з іменами полів та значеннями, що містять символи, що не є ASCII, однаково для GET та обох типів форми POST: він кодує їх, використовуючи кодування сторінки, що містить використовувану форму. Імена форм, що не належать до ASCII, є не більшими, ніж усі інші.
DLH:
Тож ім’я має інший тип даних, ніж для інших елементів?
Насправді єдиним елементом, nameатрибут якого не CDATAє, є <meta>. Перегляньте список атрибутів специфікації HTML4 для різних видів використання name; це перевантажена назва атрибута, що має багато різних значень для різних елементів. Зазвичай це вважається поганим.
Однак зазвичай в ці дні ви уникаєте, nameкрім випадків у полях форми (де це ім'я елемента керування) та param(де це ідентифікатор параметра, що відповідає плагіну). Це лише два значення, з якими можна боротися. Слід уникати використання старої школи nameдля ідентифікації елементів, таких як <form>або <a>на сторінці ( idзамість цього використовуйте ).
nameчи відрізняється тип даних<input>для інших елементів, ніж для інших елементів? Цікаво.