Tout caractère que vous pouvez inclure dans un fichier [X]HTML peut être placé dans un fichier [X]HTML. <input name>
. Comme le dit le commentaire d'Allain, <input name>
est défini comme contenant CDATA
Les seules choses que vous ne pouvez pas y mettre sont donc les codes de contrôle et les points de code invalides que la norme sous-jacente (SGML ou XML) interdit.
Allain a cité W3 à partir de la spécification HTML4 :
Remarque. La méthode "get" limite les valeurs de l'ensemble de données du formulaire aux caractères ASCII. Seule la méthode "post" (avec enctype="multipart/form-data") est spécifiée pour couvrir l'ensemble du jeu de caractères ISO10646.
Cependant, ce n'est pas vraiment vrai dans la pratique.
La théorie est que application/x-www-form-urlencoded
ne dispose pas d'un mécanisme permettant de spécifier un encodage pour les noms ou les valeurs du formulaire, de sorte que l'utilisation de caractères non ASCII dans l'un ou l'autre cas n'est "pas spécifiée" comme fonctionnant et vous devez utiliser POSTed multipart/form-data
à la place.
Malheureusement, dans le monde réel, aucun navigateur ne spécifie un encodage pour les champs, même s'il pourrait théoriquement le faire, dans les en-têtes de sous-parties d'un fichier de type multipart/form-data
Corps de la requête POST. (Je crois que Mozilla a essayé de l'implémenter une fois, mais a fait marche arrière car cela cassait les serveurs).
Et aucun navigateur ne met en œuvre l'étonnamment complexe et laid RFC2231 qui serait nécessaire pour insérer des noms de champs codés non-ASCII dans les en-têtes de sous-parties de la multipartie. Dans tous les cas, la spécification HTML qui définit la norme multipart/form-data
ne dit pas directement que la RFC2231 doit être utilisée, et, encore une fois, cela casserait les serveurs si vous essayiez.
La réalité de la situation est donc qu'il n'y a aucun moyen de savoir quel est l'encodage utilisé pour les noms et les valeurs d'un formulaire soumis, quel que soit le type de formulaire. Ce que les navigateurs font avec les noms et les valeurs des champs qui contiennent des caractères non ASCII est le même pour les formulaires GET et les deux types de POST : ils les encodent en utilisant l'encodage utilisé par la page contenant le formulaire. Les noms de formulaires GET non ASCII ne sont pas plus cassés que les autres.
DLH :
Le nom a donc un type de données différent de celui des autres éléments ?
En fait, le seul élément dont name
n'est pas CDATA
est <meta>
. Voir l'article de la spécification HTML4 liste des attributs pour toutes les différentes utilisations de name
Il s'agit d'un nom d'attribut surchargé, qui a plusieurs significations différentes selon les éléments. Ceci est généralement considéré comme une mauvaise chose.
Cependant, de nos jours, on évite généralement name
sauf sur les champs de formulaire (où il s'agit du nom d'un contrôle) et sur les champs d'entrée. param
(où il s'agit d'un identifiant de paramètre spécifique au plugin). Il n'y a donc que deux significations à prendre en compte. L'utilisation à l'ancienne de name
pour identifier des éléments comme <form>
ou <a>
sur la page doit être évitée (utilisez id
à la place).