Xpoint
   [напомнить пароль]

Передача IE символов Unicode

Особенность проявляется в Internet Explorer как минимум до 8 версии включительно.

Если в поле ввода имеются символы, отсутствующие в кодировке страницы с формой (например, кодировка страницы — CP1251, а в форму пользователь ввёл иероглифы или греческие буквы), то нормальные браузеры передают на сервер эти символы в виде HTML-entities. Однако IE, встретив такие символы хотя бы в одном поле, передаёт все данные формы в кодировке Shift-JIS (устаревшая двухбайтовая кодировка для представления японских символов).

Решение проблемы состоит в добавлении на страницу META-тега:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">

Естественно, вместо windows-1251 следует поставить реальную кодировку страницы. При наличии такого заголовка, IE начинает вести себя нормально и отсылает внетабличные символы в виде HTML-entities.

Внимание! Требуется именно META-тег в теле страницы! HTTP-заголовок Content-Type: text/html; charset=windows-1251, хотя и имеет (теоретически) точно такое же значение, к нужному эффекту не приведёт.


Замечание: имеются сведения, что в некоторых случаях даже вставка META-тэга не помогает. К сожалению, баг очень нестабилен, и воспроизвести его больше не удается, но мной точно наблюдались ситуации "порчи" кодировки с присутствующим META-тэгом. Кроме того, Опера 7.23 (видимо, и младше) вообще использует "вопросики" (?), когда встречает в форме символ вне кодировки, т.е. ведет себя отлично от IE и Mozilla. Так что единственный кроссбраузерный способ работы с Unicode-знаками — написать на JavaScript обработчик формы, "вручную" преобразующий все символы вне windows-1251 в entities. Дмитрий Котеров[досье] / 14.02.2005 05:10

...или изначально работать в UTF-8. Давид Мзареулян[досье] / 16.02.2005 21:23

Powered by POEM™ Engine Copyright © 2002-2005