Я предполагаю, что аргумент метода String body
на самом деле является данными, предоставленными пользователем, которые были введены в некоторые <input>
или <textarea>
и переданы <form method="post">
на странице JSP.
Данные будут отправлены с использованием кодировки, как указано в заголовке Content-Type
страницы, содержащей форму. Если кодировка отсутствует в заголовке Content-Type
, то браузер просто сделает правильное предположение, а MSIE, как правило, не такой умный, как другие, он просто получит кодировку по умолчанию для клиентской платформы.
Вам нужно убедиться в следующих трех вещах, чтобы все было понятно:
Убедитесь, что HTTP-ответ, содержащий <form>
, был отправлен с charset=UTF-8
в заголовке Content-Type
. Вы можете добиться этого, добавив следующую строку в начало JSP, отвечающей за генерацию ответа:
<%@page pageEncoding="UTF-8" %>
Это не только устанавливает кодировку ответа в UTF-8, но также неявно устанавливает заголовок Content-Type
в text/html;charset=UTF-8
.
Убедитесь, что сервлет, который обрабатывает отправку формы, обрабатывает входные данные в полученном HTTP-запросе с той же кодировкой символов. Этого можно добиться, добавив следующую строку до , когда вы получите любую информацию из запроса, например getParameter()
.
.
request.setCharacterEncoding("UTF-8");
Более удобным способом было бы отбросить эту строку в некотором Filter
, который сопоставлен с интересующим шаблоном URL, так что вам не нужно копировать строку для всех сервлетов.
Убедитесь, что вы не используете атрибут accept-charset
<form>
. MSIE имеет серьезные ошибки с этим.