Pour les pages déjà spécifiées (par en-tête HTTP ou par balise META), avoir un Content-Type avec un jeu de caractères UTF-8 ... est-il avantageux d'ajouter accept-charset="UTF-8"
aux formulaires HTML? (Je comprends que l'attribut accept-charset
est cassé dans IE pour ISO-8859-1, mais je n'ai pas entendu parler de problème avec IE et UTF-8.) Je demande simplement s'il y a un avantage à l'ajouter avec UTF-8, pour empêcher la saisie de séquences d'octets invalides.)Y at-il un avantage à ajouter accept-charset = "UTF-8" aux formulaires HTML, si la page est déjà en UTF-8?
Répondre
Si la page est déjà interprétée par le navigateur comme étant UTF-8, le paramètre accept-charset="utf-8"
ne fait rien.
Si vous définissez le codage de la page en UTF-8 dans un <meta>
et/ou en-tête HTTP, il sera interprété comme UTF-8, moins l'utilisateur va délibérément au menu Affichage-> de codage et sélectionne un encodage différent, remplaçant celui que vous avez spécifié.
Dans ce cas, accept-encoding
aurait pour effet de ramener le codage de soumission à UTF-8 face à l'utilisateur qui déconnerait avec le codage de la page. Cependant, cela ne fonctionnera toujours pas dans IE, en raison des problèmes précédents discutés avec accept-encoding
dans ce navigateur.
Il est donc douteux de savoir si cela vaut la peine d'inclure accept-charset
pour résoudre le cas où un utilisateur non-IE a délibérément saboté l'encodage de la page (peut-être plus sur votre page que simplement le formulaire).
Personnellement, je ne dérange pas.
Etes-vous sûr? Cela a du sens mais le doc dit 'peut interpréter 'et que la valeur par défaut est UNKNOWN. – philfreo
Sur tous les navigateurs (maintenant et historiquement), 'UNKNOWN'/unset signifie toujours le codage de la page en cours, qu'il s'agisse du codage de la page du serveur dans un en-tête/méta ou du codage explicitement défini par l'utilisateur. Exception qui ne vous affecte probablement pas: la plupart des navigateurs n'enverront pas de soumissions de formulaire dans un encodage non-ASCII-superset comme UTF-16 même si la page a été servie comme ça. Cela n'a pas vraiment de sens de le faire. – bobince
Je n'ai rencontré aucun problème en utilisant UTF-8 avec IE (6+) ou tout autre navigateur majeur. Vous devez vous assurer qu'une balise Meta UTF-8 est définie (IE en a besoin) et que tous vos fichiers sont codés en UTF-8 (ce qui signifie que le serveur Web envoie des en-têtes UTF-8). Ensuite, il ne devrait pas y avoir de problème si vous omettez accept-charset
.
Je fais ces choses, sans cet attribut de forme, je reçois des cas de UTF-8 invalide étant entré (http://stackoverflow.com/questions/ 3715264/how-to-handle-utilisateur-input-of-invalid-utf-8-characters), donc j'essaie de trouver de façon concluante si je l'ajoute à orms sera utile ou inutile. – philfreo
@philfreo: Je ne l'ai jamais utilisé une fois et n'ai eu aucun problème. Pouvez-vous nous donner un lien vers votre page? – jwueller
Si votre page est réellement utilisée comme UTF-8, vous ne devriez pas recevoir de soumissions non-UTF-8 à partir de ce formulaire. Bien sûr, si d'autres sites intègrent un formulaire pointant vers votre site ou des agents automatisés qui envoient du contenu en général, tous les paris sont désactivés. – bobince
Ma question est plus spécifique ... mais liée: http://stackoverflow.com/questions/3715264/how-to-handle-user-input-of-invalid-utf-8-characters et http: // stackoverflow.com/questions/1317152/am-i-correctly-supporting-utf-8-in-my-php-apps/1317301#1317301 – philfreo
Référence associée du W3C: http://www.w3.org/TR/html401/ interact/forms.html # adef-accept-charset (notez le "may" dans 'Les agents utilisateurs peuvent interpréter cette valeur comme le codage de caractères utilisé pour transmettre le document' - cela signifie-t-il qu'il est plus sûr de le mentionner explicitement? D'après mon expérience, je suis d'accord avec ce que @elusive dit) –