Такое ощущение, что я застрял.Я пытаюсь написать простейший фильтр сервлетов (и развернуть его в Tomcat).Это отличный код, но на самом деле я активно использую Java-подходы, так что это почти копирование-вставка, поэтому я также добавил java-тег.
Мой вопрос - как я могу вставитьUTF-8 строка для фильтрации?Вот код:
public class SimpleFilter implements javax.servlet.Filter
{
...
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws java.io.IOException, javax.servlet.ServletException
{
PrintWriter out = response.getWriter()
chain.doFilter(request, wrapResponse((HttpServletResponse) response))
response.setCharacterEncoding('UTF-8')
response.setContentType('text/plain')
def saw = 'АБВГДЕЙКА ЭТО НЕПРОСТАЯ ПЕРЕДАЧА ABCDEFGHIJKLMNOP!!!'
def bytes = saw.getBytes('UTF-8')
def content = new String(bytes, 'UTF-8')
response.setContentLength(content.length())
out.write(content);
out.close();
}
private static HttpServletResponse wrapResponse(HttpServletResponse response) {
return new HttpServletResponseWrapper(response) {
@Override
public PrintWriter getWriter() {
def writer = new OutputStreamWriter(new ByteArrayOutputStream(), 'UTF-8')
return new PrintWriter(writer)
}
}
}
}
Тип содержимого отфильтрованной страницы: text/plain;charset=ISO-8859-1
.Итак, тип контента изменился, но кодировка игнорируется.
Как вы можете видеть, я принял некоторые меры (я полагаю, довольно наивно), чтобы убедиться, что контент - UTF-8, но на самом деле ни один из этих шаговбыло полезно.
Я также пытался добавить атрибуты URIEncoding="UTF-8"
или useBodyEncodingForUri="true"
к Соединителю в tomcat conf / server.xml
Было бы хорошо, если бы кто-то объяснил мне, что я 'я делаю неправильно.
UPD: просто небольшое объяснение - я пишу фильтр, применяющий XSLT, и это настоящая причина, по которой я пытаюсь отбросить весь запрос.