Ответ 1
Есть много факторов, которые могут сыграть свою роль. В вашем конкретном случае вы используете старомодные сценарии для записи строки XML в ответ. <%= foo %>
неявно вызывает response.getWriter().write(foo)
. Вам также нужно установить кодировку символов автоответчика, добавив следующее в верхний вашего JSP:
<%@ page pageEncoding="UTF-8" %>
Это установит кодировку ответа на UTF-8
путем неявного вызова response.setCharacterEncoding("UTF-8")
и, она также добавит соответствующий заголовок ответа, если он еще не выполнен.
Все факторы, которые вы действительно должны учитывать:
- Запросить кодирование. Для запросов GET это необходимо установить в конфигурации сервера приложений. Для запросов POST вам нужно использовать
HttpServletRequest#setCharacterEncoding()
. - Кодирование ответа. На это уже ответили.
- Кодировка базы данных. Укажите кодировку во время SQL
CREATE
.
Для получения дополнительной справочной информации и подробного обзора всех решений вы можете найти эту статью.
Тем не менее, строки <% response.setContentType("application/xhtml+xml"); %>
совершенно излишни, если вы уже установили <meta http-equiv="content-type">
в HTML-заголовке. Избавьтесь от них и, если возможно, от скриптлетов. Просто используйте EL:
${someBean.somePropertyReturningXmlString}