En Ruby on Rails 3 (actualmente usando Beta 4), veo que cuando uso los form_tag
o form_for
helpers hay un campo oculto llamado _snowman
con el valor de ☃ ( Unicode \ x9731).
Entonces, ¿para qué sirve esto?
ruby-on-rails
forms
unicode
Peter Mortensen
fuente
fuente
Respuestas:
Este parámetro se agregó a los formularios para obligar a Internet Explorer (5, 6, 7 y 8) a codificar sus parámetros como unicode.
Específicamente, este error se puede activar si el usuario cambia la codificación del navegador a Latin-1. Para comprender por qué un usuario decidiría hacer algo aparentemente tan loco, consulte esta búsqueda de Google . Una vez que el usuario ha puesto el sitio web en modo Latin-1, si utiliza caracteres que se pueden entender como Latin-1 y Unicode (por ejemplo, é o ç, comunes en los nombres), Internet Explorer los codificará en latín -1.
Esto significa que si un usuario busca "Ché Guevara", aparecerá incorrectamente en el lado del servidor. En Ruby 1.9, esto dará como resultado un error de codificación cuando el texto inevitablemente llegue al motor de expresiones regulares. En Ruby 1.8, dará como resultado resultados rotos para el usuario.
Al crear un parámetro que solo IE puede entender como un carácter unicode, estamos obligando a IE a mirar el atributo accept-charset, que luego le dice que codifique todos los caracteres como UTF-8, incluso los que pueden codificarse en latín-1.
Tenga en cuenta que en Ruby 1.8, es extremadamente trivial obtener datos Latin-1 en su base de datos UTF-8 (ya que nada en la pila completa verifica que los bytes que el usuario envió en cualquier momento sean caracteres UTF-8 válidos). Como resultado, es extremadamente común que las aplicaciones de Ruby (y aplicaciones PHP, etc., etc.) exhiban este error orientado al usuario y, por lo tanto, es extremadamente común que los usuarios intenten cambiar la codificación como medida paliativa.
Dicho todo esto, cuando escribí este parche, no me di cuenta de que el nombre del parámetro aparecería alguna vez en un lugar orientado al usuario (lo hace con formularios que usan la acción GET, como los formularios de búsqueda). Como lo hace, cambiaremos el nombre de este parámetro
_e
y usaremos un carácter unicode de aspecto más inocuo.fuente
Esto está aquí para admitir Internet Explorer 5 y alentarlo a usar UTF-8 para sus formularios.
El mensaje de confirmación visto aquí lo detalla de la siguiente manera:
En resumen, puede ignorar este parámetro de forma segura.
Aún así, no estoy seguro de por qué admitimos tecnologías antiguas como Internet Explorer 5. Parece que es una decisión muy diferente a Ruby on Rails si me preguntas.
fuente