В Ruby on Rails 3 (в настоящее время используется бета-версия 4) я вижу, что при использовании form_tag
или form_for
помощников появляется скрытое поле с именем _snowman
☃ ( Unicode \ x9731).
Итак, для чего это нужно?
ruby-on-rails
forms
unicode
Peter Mortensen
источник
источник
Ответы:
Этот параметр был добавлен в формы для того, чтобы заставить Internet Explorer (5, 6, 7 и 8) кодировать свои параметры как Unicode.
В частности, эта ошибка может быть вызвана, если пользователь переключает кодировку браузера на Latin-1. Чтобы понять, почему пользователь решил сделать что-то сумасшедшее, посмотрите этот поиск в Google . Когда пользователь переводит веб-сайт в режим Latin-1, если он использует символы, которые можно понимать как Latin-1 и Unicode (например, é или ç, общие по именам), Internet Explorer закодирует их на латинице. -1.
Это означает, что если пользователь ищет «Ché Guevara», он будет некорректно отображаться на стороне сервера. В Ruby 1.9 это приведет к ошибке кодирования, когда текст неизбежно попадет в механизм регулярных выражений. В Ruby 1.8 это приведет к неверным результатам для пользователя.
Создавая параметр, который может восприниматься IE только как символ Юникода, мы заставляем IE посмотреть атрибут accept-charset, который затем говорит ему кодировать все символы как UTF-8, даже те, которые могут быть закодированы на латыни-1.
Помните, что в Ruby 1.8 очень просто загружать данные Latin-1 в базу данных UTF-8 (поскольку ничто во всем стеке не проверяет, что байты, отправленные пользователем в любой точке, являются действительными символами UTF-8). В результате этого приложения Ruby (и приложения PHP, и т. Д.) Очень часто демонстрируют эту ошибку, с которой сталкиваются пользователи, и, следовательно, очень часто пользователи пытаются изменить кодировку как паллиативную меру.
Несмотря на все сказанное, когда я писал этот патч, я не осознавал, что имя параметра будет когда-либо появляться в месте, обращенном к пользователю (это происходит с формами, использующими действие GET, такими как формы поиска). Поскольку это так, мы будем переименовывать этот параметр
_e
и использовать более безвредно выглядящий символ Юникода.источник
Это здесь для поддержки Internet Explorer 5 и поощрения использования UTF-8 для своих форм.
Сообщение о коммите, показанное здесь, детализирует его следующим образом:
Короче говоря, вы можете смело игнорировать этот параметр.
Тем не менее, я не уверен, почему мы поддерживаем старые технологии, такие как Internet Explorer 5. По-моему, это совсем не решение Ruby on Rails, если вы спросите меня.
источник