Każdy znak, który można umieścić w pliku HTML [X], można umieścić w pliku <input name>. Jak mówi komentarz Allaina, <input name>jest definiowany jako zawierającyCDATA , więc jedyne rzeczy, których nie możesz tam umieścić, to kody kontrolne i nieprawidłowe punkty kodowe, których podstawowy standard (SGML lub XML) nie zezwala.
Allain zacytował W3 ze specyfikacji HTML4:
Uwaga. Metoda „get” ogranicza wartości zestawu danych formularza do znaków ASCII. Określono tylko metodę „post” (z enctype = „multipart / form-data”) w celu pokrycia całego zestawu znaków ISO10646.
Jednak w praktyce nie jest to prawdą.
Teoria mówi, że application/x-www-form-urlencodeddane nie mają mechanizmu do określania kodowania nazw lub wartości formularza, więc użycie znaków spoza zestawu ASCII w jednym z nich jest „nieokreślone” jako działające i multipart/form-datazamiast tego należy użyć metody POST .
Niestety w prawdziwym świecie żadna przeglądarka nie określa kodowania pól, nawet jeśli teoretycznie by to możliwe, w nagłówkach podpunktu multipart/form-datatreści żądania POST. (Myślę, że Mozilla próbowała go raz zaimplementować, ale wycofała się, ponieważ zepsuła serwery).
Żadna przeglądarka nie implementuje zadziwiająco złożonego i brzydkiego standardu RFC2231, który byłby niezbędny do wstawiania zakodowanych nazw pól innych niż ASCII do nagłówków części wieloczęściowej. W każdym razie specyfikacja HTML, która definiuje multipart/form-data, nie mówi bezpośrednio, że należy użyć RFC2231, i ponownie, jeśli spróbujesz, zepsuje serwery.
W rzeczywistości sytuacja jest taka, że nie ma sposobu, aby dowiedzieć się, jakie kodowanie jest używane dla nazw i wartości w przesłanym formularzu, bez względu na typ formularza. To, co przeglądarki zrobią z nazwami pól i wartościami, które zawierają znaki inne niż ASCII, jest takie samo dla GET i obu typów formularza POST: koduje je przy użyciu kodowania strony zawierającej użyty formularz. Nazwy formularzy GET spoza ASCII nie są bardziej zepsute niż wszystko inne.
DLH:
Czyli nazwa ma inny typ danych niż dla innych elementów?
Właściwie jedynym elementem, którego nameatrybutem nie CDATAjest, jest <meta>. Zobacz listę atrybutów specyfikacji HTML4 dla wszystkich różnych zastosowań name; jest to przeciążona nazwa atrybutu, mająca wiele różnych znaczeń dla różnych elementów. Jest to ogólnie uważane za złe.
Jednak zazwyczaj w dzisiejszych czasach należy unikać namez wyjątkiem pól formularza (gdzie jest to nazwa kontrolki) i param(gdzie jest to identyfikator parametru specyficzny dla wtyczki). To tylko dwa znaczenia, z którymi trzeba się zmagać. Należy unikać starodawnego stosowania nameznaku do identyfikowania elementów, takich jak <form>lub <a>na stronie (użyj idzamiast tego).
namema inny typ danych dla<input>niż dla innych elementów? Ciekawy.