In Ruby on Rails 3 (derzeit mit Beta 4) wird bei Verwendung von form_tag
oder helfer form_for
ein verstecktes Feld _snowman
mit dem Wert ☃ ( Unicode \ x9731) angezeigt.
Also, wofür ist das?
ruby-on-rails
forms
unicode
Peter Mortensen
quelle
quelle
Antworten:
Dieser Parameter wurde Formularen hinzugefügt, um Internet Explorer (5, 6, 7 und 8) zu zwingen, seine Parameter als Unicode zu codieren.
Insbesondere kann dieser Fehler ausgelöst werden, wenn der Benutzer die Codierung des Browsers auf Latin-1 umstellt. Schauen Sie sich diese Google-Suche an , um zu verstehen, warum sich ein Nutzer für etwas so Verrücktes entscheidet . Sobald der Benutzer die Website in den Latin-1-Modus versetzt hat und Zeichen verwendet, die sowohl als Latin-1 als auch als Unicode verstanden werden können (z. B. é oder ç, häufig in Namen), codiert Internet Explorer sie in Latin -1.
Dies bedeutet, dass ein Benutzer, der nach "Ché Guevara" sucht, auf der Serverseite falsch durchkommt. In Ruby 1.9 führt dies zu einem Codierungsfehler, wenn der Text unweigerlich in die Engine für reguläre Ausdrücke gelangt. In Ruby 1.8 führt dies zu fehlerhaften Ergebnissen für den Benutzer.
Indem wir einen Parameter erstellen, der nur vom IE als Unicode-Zeichen verstanden werden kann, zwingen wir den IE, das Attribut accept-charset zu betrachten, das ihn dann anweist, alle Zeichen als UTF-8 zu codieren, auch diejenigen, die codiert werden können in Latein-1.
Beachten Sie, dass es in Ruby 1.8 äußerst trivial ist, Latin-1-Daten in Ihre UTF-8-Datenbank zu übertragen (da nichts im gesamten Stapel überprüft, ob die vom Benutzer zu irgendeinem Zeitpunkt gesendeten Bytes gültige UTF-8-Zeichen sind). Infolgedessen ist es bei Ruby-Anwendungen (und PHP-Anwendungen usw. usw.) äußerst häufig, dass dieser benutzerbezogene Fehler auftritt, und daher ist es äußerst häufig, dass Benutzer versuchen, die Codierung als palliative Maßnahme zu ändern.
Als ich diesen Patch schrieb, war mir nicht klar, dass der Name des Parameters jemals an einer benutzerbezogenen Stelle erscheinen würde (dies gilt für Formulare, die die GET-Aktion verwenden, z. B. Suchformulare). Da dies der Fall ist, werden wir diesen Parameter in umbenennen
_e
und ein harmlos aussehendes Unicode-Zeichen verwenden.quelle
Dies dient dazu, Internet Explorer 5 zu unterstützen und es zu ermutigen, UTF-8 für seine Formulare zu verwenden.
In der hier angezeigten Festschreibungsnachricht wird Folgendes beschrieben:
Kurz gesagt, Sie können diesen Parameter ignorieren.
Trotzdem bin ich mir nicht sicher, warum wir alte Technologien wie Internet Explorer 5 unterstützen. Wenn Sie mich fragen, scheint dies eine Entscheidung zu sein, die nicht von Ruby on Rails stammt.
quelle