Wie man einfachste servlet-filter Respekt setted Zeichenkodierung

Es fühlt sich an wie ich bin stecken.
Ich bin versucht, zu schreiben, die einfachsten servlet-Filter (und bereitstellen, um tomcat). Es ist ein groovy-code, aber eigentlich bin ich stark mit java-Ansätze hier, so ist es fast, kopieren und einfügen, das ist der Grund warum ich Hinzugefügt habe, java-Tags als auch.

Meine Frage ist - wie kann ich das einfügen UTF-8-string filtern?
Hier ist der code:

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)
            }   
        }   
    }   
}

Content-Type der gefilterten Seite ist text/plain;charset=ISO-8859-1.
Also, content-type geändert haben, aber-Zeichensatz wird ignoriert.

Wie Sie sehen können, habe ich einige Maßnahmen (vermute ich mal ganz naiv), um sicherzustellen, dass die Inhalte in UTF-8, aber keiner dieser Schritte tatsächlich hilfreich war.

Habe ich auch versucht, um URIEncoding="UTF-8" oder useBodyEncodingForUri="true" Attribute
Connector im tomcat conf/server.xml

Es wäre schön, wenn jemand mir erklärt was ich falsch mache.

UPD: nur ein bisschen Erklärung - ich Schreibe XSLT-anwenden von filtern, das ist der eigentliche Grund, warum ich versuche zu verwerfen gesamte Anfrage.

  • Erklären Sie uns, was Sie erreichen wollen? Wenn ich es richtig verstehe, ist dieser filter nennt der rest der Kette, verwirft jedoch seine Antwort. Dann versucht er zu senden, die eine hart-codierte UTF-8-string in der eigentlichen Antwort.
  • eigentlich ist meine intention ist das schreiben von xslt-filter und es erwies sich als relativ leichte Aufgabe. Das einzige Problem, das ich nicht lösen kann ist die richtige Kodierung in der Antwort. Also, ja, ich bin tatsächlich verwerfen, die Antwort selbst, aber meine Absichten sind gut )))
  • Das nicht erklären, was der filter tun soll.
  • beim anwenden der filter bin ich eigentlich: 1. Erkennung von text/xml content 2. versucht zu finden, jede stylesheet-Reaktion. 3. wenn gefunden, die Anwendung auf die Antwort Ausgang 4. Austausch-Reaktion mit layout, erstellt mit xslt transformieren. Wenn dieser Ansatz ungeeignet ist, fühlen Sie sich frei, um Gorbatschow.
InformationsquelleAutor shabunc | 2012-02-10
Schreibe einen Kommentar