L'utilisation de «utf8 = ✓» est-elle préférable à «utf8 = true»?

569

J'ai récemment vu quelques URI contenant le paramètre de requête "utf8 = ✓". Ma première impression (après avoir pensé à "mmm, a l'air cool") était que cela pouvait être utilisé pour détecter un encodage de caractère cassé.

Alors, s'agit-il d'un meilleur moyen de résoudre les problèmes potentiels liés à l'encodage de caractères ou s'agit-il simplement d'un développeur qui s'amuse avec un hack?

Gary Rowe
la source
7
Je ne suis pas d'accord. Il existe des schémas qui ressemblent à des URN et qui prennent des paramètres de requête, tels que Bitcoin. Les URI ne sont pas limités aux navigateurs. Voir en.wikipedia.org/wiki/URI_scheme . Cette question peut également concerner le cas général où le codage de caractères est requis lorsqu'un navigateur accède à un gestionnaire de protocole.
Gary Rowe
3
Donnez des exemples de ces URL ou ne s'est pas produit.
hakre
10
Hors sujet, mais OK. Voici mon don personnel Bitcoin URI: bitcoin: 1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH? Amount = 0.5 & label = Agile% 20Stack. Notez que le schéma est essentiellement un URN avec des paramètres de requête, mais passe à un gestionnaire de protocole. Ce type d’URI pourrait probablement bénéficier de la solution de contournement «utf8 = ✓».
Gary Rowe
1
@GaryRowe Avez-vous déjà reçu des dons via ce lien?
Kyralessa

Réponses:

814

Par défaut, les anciennes versions d'IE (<= 8) soumettront si possible les données de formulaire au codage Latin-1. En incluant un caractère qui ne peut pas être exprimé en latin-1, IE est obligé d'utiliser le codage UTF-8 pour la soumission de formulaires, ce qui simplifie divers processus dorsaux, tels que la persistance de la base de données.

Si le paramètre était à la place, utf8=truecela ne déclencherait pas le codage UTF-8 dans ces navigateurs.

Gareth
la source
8
@LarsViklund J'aurais dû être plus clair avec mon commentaire. Je voulais dire que la validation associée au codage de caractères est simplifiée et non contournée.
Gary Rowe
3
@Lars Correct, cela ne vous dispense pas de vérifier votre saisie. Mais cela signifie que les modifications d’encodage ne deviennent que des éléments de votre gestion de la sécurité et ne ternissent pas le concept de votre chemin de "traitement standard"
Gareth
36
Voir également stackoverflow.com/questions/3222013/… . Apparemment, Ruby on Rails utilisait un personnage de bonhomme de neige et a été remplacé par une coche qui était moins ambiguë mais moins drôle.
Jack V.
11
@JohnLBevan est ignoré par le destinataire, il a pour tâche de forcer le navigateur à envoyer des éléments en utf8 au lieu de latin1. Je l'ai également vu comme ie = 💩 (c'est le point de code de la "pile de caca", on dirait que ce n'est pas rendu dans les commentaires.)
cabbey
3
@Gareth: Pouvez-vous sauvegarder la déclaration selon laquelle les formulaires IE <= 8 ne prennent pas en charge le document et / ou le codage de formulaire?
hakre