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