Jan K.: Tomcat: Umlaute falsch

Beitrag lesen

Re.

Du bekommst eine Antwort mit Content-Type:text/plain und da hängt keine Angabe zur verwendeten Kodierung dran. Der Browser rät sich nun eins und rät da wohl falsch.

Das hat mich auf die Lösung gebracht: "Wie sage ich dem Tomcat statische Dokumente mit der Kodierung UTF-8 auszuliefern?"

Die Antwort hat Google geliefert: Mit einem CharsetFilter12

Besten Dank fürs Helfen :)

*1 Die Filterklasse

package weblogic;
import javax.servlet.*;
import java.io.IOException;
/**
 * http://stackoverflow.com/questions/138948/how-to-get-utf-8-working-in-java-webapps
 */
public class CharsetFilter implements Filter {

    private String encoding;

    public void init(FilterConfig config) throws ServletException {
        encoding = config.getInitParameter("requestEncoding");
        if (encoding == null) encoding = "UTF-8";
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
            throws IOException, ServletException {
        // Respect the client-specified character encoding
        // (see HTTP specification section 3.4.1)
        if (null == request.getCharacterEncoding()) {
            request.setCharacterEncoding(encoding);
        }

        // Set the default response content type and encoding
        response.setContentType("text/html; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");

        next.doFilter(request, response);
    }

    public void destroy() {
    }
}

*2 web.xml: verweis auf Filterklasse + jsp-config

<!--CharsetFilter start--> 
<filter>
  <filter-name>CharsetFilter</filter-name>
  <filter-class>weblogic.CharsetFilter</filter-class>
  <init-param>
    <param-name>requestEncoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>CharsetFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
 
<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <page-encoding>UTF-8</page-encoding>
  </jsp-property-group>
</jsp-config> 

*3 Mit dem CharsetFilter passt die Ausgabe :) Bildbeschreibung