Этот параметр был добавлен в формы для того, чтобы заставить 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, даже те, которые могут быть закодированы в Latin-1.
Имейте в виду, что в Ruby 1.8 очень просто ввести данные Latin-1 вваша база данных UTF-8 (поскольку ничто во всем стеке проверяет, что байты, отправленные пользователем в любой точке, являются действительными символами UTF-8).В результате этого приложения Ruby (и приложения PHP, и т. Д.) Очень часто демонстрируют эту ошибку, с которой сталкиваются пользователи, и поэтому пользователи очень часто пытаются изменить кодировку как паллиативную меру.
* 1016Все это говорит о том, что когда я писал этот патч, я не осознавал, что имя параметра будет когда-либо появляться в месте, обращенном к пользователю (это происходит с формами, использующими действие GET, такими как формы поиска).Поскольку это так, мы переименуем этот параметр в
_e
и будем использовать более невинный вид символа Юникода.