Простой HTML файл:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form method="POST" action="test.jsp" accept-charset="utf-8" method="post" enctype="application/x-www-form-urlencoded" >
<input type="text" name="P"/>
<input type="submit" value="subMit"/>
</form>
</body>
</html>
HTML файл обслуживается сервером с помощью заголовка Content-Type:text/html; charset=utf-8
. Все говорит: "Уважаемый браузер, когда вы публикуете эту форму, пожалуйста, напишите" utf-8 encoded ". На самом деле браузер делает это. Каждое значение, введенное в поле ввода, будет кодироваться UTF-8. НО браузер не сообщит об этом серверу! HTTP-заголовок почтового запроса будет содержать поле Content-Type:application/x-www-form-urlencoded
, но кодировка будет опущена (протестирована с FF3.6 и IE8).
Проблема заключается в том, что сервер приложений, который я использую (Tomcat6), ожидает кодировку в заголовке Content-Type (как указано в RFC2388). Пример: Content-Type:application/x-www-form-urlencoded;charset=utf-8
. Если кодировка опущена, она будет считать ISO-8859-1, которая не является кодировкой, используемой для кодирования. Результатом являются неработающие данные.
Есть ли у кого-нибудь подсказка, как заставить текущие браузеры добавлять кодировку к заголовку Content-Type?