Кажется, что это не может быть сделано, не, по крайней мере, с текущими версиями IE (6 и 7).
форма поддержек IE приписывает принимать-набор-символов, но только если его значение является 'utf-8'.
решение состоит в том, чтобы изменить сервер для создания кодирования 'ISO-8859-1' для страницы, которая содержит форму.
Если Вы имеете доступ к серверу вообще, преобразовываете его обработку в UTF-8. Искусство представления non-UTF-8 формы является длинной и жаль историей; этот документ о формах и i18n может представлять интерес. Я понимаю, что Вы, кажется, не заботитесь о международной поддержке; можно всегда преобразовывать данные UTF-8 в объекты HTML, чтобы удостовериться, что это остается латинским 1.
Я вполне уверен, это не будет возможно с более старыми версиями IE. Перед эти accept-charset
атрибут был создан, не было никакого пути к form
элементы для определения, какую кодировку символов они приняли, и лучшее, которое могли сделать браузеры, принимают кодирование страницы, в которой находится форма, сделает.
немного грустно, что необходимо знать, какое кодирование использовалось - в наше время мы будем ожидать, что наши веб-платформы будут заботиться о таких деталях невидимо и представлять текстовые данные приложению, поскольку Unicode представляет в виде строки, уже декодируемый...
Похож на Microsoft, знает принимать-набор-символов , но их документ не говорит, на которую версию это начинает работать...
Вы не говорите ни одному, в которых версиях браузера Вы протестировали его.
Я, кажется, помню, что Internet Explorer запутывается, если кодирование принимать-набора-символов не соответствует кодированию, определенному в заголовке типа контента. В Вашем примере Вы утверждаете, что документ отправляется как UTF-8, но хотят форму, отправляет в ISO-8859-1. Попытайтесь соответствовать тем и посмотрите, решает ли это Вашу проблему.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Для этого есть простой взлом:
Вставьте скрытое поле ввода в форму с сущностью, которая встречается только в наборе символов сервера, на который вы отправляете (или выполняете GET) принимает.
Пример: Если форма расположена на сервере, обслуживающем ISO-8859-1, и форма будет отправлена на сервер, ожидающий, что UTF-8 вставит что-то вроде этого в форме:
<input name="iehack" type="hidden" value="☠" />
IE затем "обнаружит" что форма содержит символ UTF-8 и использует UTF-8 при POST или GET. Странно, но работает.
У меня такая же проблема, и у меня есть относительно простое решение, которое не требует изменения кодировки символов страницы (что является болью в заднице).
Например, ваш сайт в utf-8, а вы хотите отправить форму на сайт в iso-8859-1. Просто измените действие сообщения на страницу на вашем сайте, которая преобразует опубликованные значения из utf-8 в iso-8859-1.
это можно легко сделать на php, используя что-то вроде этого:
<?php
$params = array();
foreach($_POST as $key=>$value) {
$params[] = $key."=".rawurlencode(utf8_decode($value));
}
$params = implode("&",$params);
//then you redirect to the final page in iso-8859-1
?>