Ce paramètre a été ajouté aux formulaires afin de forcer Internet Explorer (5, 6, 7 et 8) à coder ses paramètres en tant qu'unicode. En particulier, ce bug peut être déclenché si l'utilisateur passe l'encodage du navigateur à Latin-1. Pour comprendre pourquoi un utilisateur décide de faire quelque chose qui semble si fou, consultez this google search. Une fois que l'utilisateur a mis le site web en mode Latin-1, s'il utilise des caractères qui peuvent être compris comme Latin-1 et Unicode (par exemple, é ou ç, commun dans les noms), Internet Explorer les encodera en latin -1. Cela signifie que si un utilisateur recherche "Ché Guevara", il ne le recevra pas correctement côté serveur. Dans Ruby 1.9, cela entraînera une erreur d'encodage lorsque le texte se retrouvera inévitablement dans le moteur d'expressions régulières. Dans Ruby 1.8, cela entraînera des résultats brisés pour l'utilisateur.En créant un paramètre qui ne peut être compris que par IE comme unicode, nous forçons IE à regarder l'attribut accept-charset, qui lui dit de coder tous les caractères comme UTF-8, même ceux qui peut être encodé en Latin-1.
Gardez à l'esprit que Ruby 1.8, il est extrêmement trivial pour obtenir des données Latin-1 dans votre base de données UTF-8 (depuis rien dans les contrôles entiers de pile que les octets que l'utilisateur envoyé à tout moment sont valables Caractères UTF-8). Par conséquent, il est extrêmement courant que les applications Ruby (et les applications PHP, etc., etc.) présentent ce bogue face à l'utilisateur, et donc extrêmement commun pour les utilisateurs d'essayer de changer l'encodage en tant que mesure palliative. Cela dit, quand j'ai écrit ce correctif, je ne me suis pas rendu compte que le nom du paramètre apparaîtrait jamais dans un endroit en face de l'utilisateur (avec des formes qui utilisent l'action GET, comme les formulaires de recherche) . Comme c'est le cas, nous allons renommer ce paramètre à _e
, et utiliser un caractère unicode plus inoffensif.
Ceci est un type de 'documentation' Q & A - J'ai essayé de trouver une réponse ici et j'ai fini par creuser les messages de validation, donc je me suis dit que je la partagerais ici pour d'autres personnes ... –
[ceci] (http://programmers.stackexchange.com/q/168751/37622). – MasterMastic