Кодировка данных, отправляемых формой

Данные, отправляемые формой имеют ту же кодировку, что и страница, на которой находится форма. Но как же быть, если страница например в кодировке UTF-8, а надо чтобы данные отправлялись в кодировке windows-1251. Конечно есть такой вариант, как сменить кодировку у страницы. Но это не всегда возможно, сайт — CMS уже настроена на работу с конкретной кодировкой.

Поменять кодировку отправляемых формой данных можно прописав у тега form атрибут accept-charset=»нужная кодировка». Например:

В этом случае в независимости от кодировки страницы данные формы будут в кодировке windows-1251.

UPD

Но! Как выяснилось этот атрибут не поддерживается горячо «любимом» браузере Internet Explorer до 7 версии включительно.
В последующих реализовано, но имеются ошибки. Internet Explorer содержит ошибку при использовании кодировки ISO-8859-1, в этом случае браузер отправляет данные в кодировке Windows-1252.

К сожалению всё предыдущее решение ломается, так как этот браузер на данный момент игнорировать нельзя. Но думаю в скором будущем — через год, можно будет забыть про IE 6, так как его процент стремительно падает. Так же можно будет забыть IE7, так как к моей радости благодаря выпуску IE 8 он не обрёл такую большую популярность. Да и политика от мелкомягких к счастью сменилась. Выпускают более новые браузеры и от старых стараются отказываться.

Как бы то ни было, проблему с кодировкой кроссбраузерно можно решить следующим методом.

Подключаем в нужном месте на странице с кодировкой UTF-8 файл с формой посредством iframe. Подключаемый файл должен иметь нужную кодировку, например windows-1251. Тогда форма будет отправлять данные в нужной — windows-1251 кодировке.

Для красоты у iframe ставим высоту, ширину, чтобы форма была видна. Убираем скроллинг в любой ситуации. Убираем рамки. Это всё для того, чтобы не было видно, что форма находится в iframe.

У формы в подключаемом файле ставим target=»_parent». У подключаемого файла ставим нужную кодировку в метатегах.

Иногда браузер игнорирует установку кодировки из метатегов, так как сервер приказывает браузеру установить другую кодировку посредством HTTP заголовков. Да, для браузера приоритетнее HTTP заголовки, чем метатеги. Для этого делаем подключаемый файл сделаем скриптом .php и в начале файла пишем следующее:

Понравилось? Поделись с другими плз












Комментарии ВКонтакте





Комментарии с сайта

Оставить комментарий

*