Any character that you can include in the HTML [X] file can be placed in <input name> . As Allain noted in a comment, <input name> is defined as containing CDATA , so the only things you cannot insert are control codes and invalid code points that prohibit the basic standard (SGML or XML).
Allain quotes W3 from the HTML4 specification:
Note. The get method restricts the values ββof the form dataset to ASCII characters. To cover the entire ISO10646 character set, only the "post" method is specified (with enctype = "multipart / form-data").
However, in practice this is not so.
The theory is that application/x-www-form-urlencoded data does not have a mechanism to specify an encoding for form names or values, so using non-ASCII characters is either "not specified" as working, and you should use POSTed multipart/form-data instead.
Unfortunately, in the real world, no browser indicates the field encoding, even if it theoretically can, in the headers of the subdirectories of the multipart/form-data POST request body. (I believe Mozilla tried to implement it once, but refused because it broke the servers.)
And no browser implements the surprisingly complex and ugly standard RFC2231 , which is required to insert encoded field names without an ASCII name in multipart section headers. In any case, the HTML specification that defines multipart/form-data does not directly indicate that RFC2231 should be used, and, again, it will break the servers if you try.
So, the reality of the situation is that there is no way to find out what encoding is used for names and values ββin the form presentation, regardless of what type of form it has. What browsers will do with field names and values ββthat contain non-ASCII characters are the same for GET and the two types of POST forms: it encodes them using the encoding of the page containing the form used. Non-ASCII GET names are no more broken than anything else.
DLH:
So, does the name have a different data type than for the other elements?
In fact, the only element whose name attribute is not CDATA is <meta> . See the HTML4 attribute specification for all uses of name ; This is an overloaded attribute name that has many different meanings for different elements. This is usually considered bad.
However, usually these days you avoid name except for form fields (where is the name of the control) and param (where is the identifier of the parameter depending on the plugin). These are just two meanings. Avoid using the old-school name to identify elements such as <form> or <a> on the page (use id instead).