# Formulare und Umlaute



## Rumborak (30. Mrz 2006)

Hallo zusammen!

Wie kann ich dafür sorgen, daß Umlaute in Formularfeldern richtig übertragen werden?

Der Aufbau der JSP sieht wie folgt aus:
	
	
	
	





```
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib uri="/tags-page" prefix="page"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html:html xhtml="true">
...
```

über Tiles wird dann irgendwo ein Formular eingebunden - Textfelder sind so definiert:


```
<html:text name="Bla" property="blub" styleClass="text" />
```

HTML-Sonderzeichen werden wohl automatisch korrekt encodiert, nur mit den Umlauten klappt das nicht - wieso eigentlich? der Quellcode der HTML-Seite sieht im Browser so aus:





> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml" lang="de-DE" xml:lang="de-DE">
> <head>
> ...


Hat da jemand eine Idee?

Wäre super  !


----------



## mlange8801 (30. Mrz 2006)

Das Problem bei UTF-8 ist wohl, dass Tomcat (falls Du Tomcat verwendest) davon ausgeht, dass der Browser das encoding mitsendet (Was wohl nach der Spezifikation auch der Browser machen sollte - die meisten Browser halten sich nur nicht daran).
Wenn dies nicht der Fall ist, nimmt Tomcat wohl iso als encoding an.
Eine Möglichkeit ist es, einfach das encoding in einem Filter zu setzen:


```
package filter;
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


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
 {

  request.setCharacterEncoding(encoding);
  next.doFilter(request, response);
 }

 public void destroy(){}
}
```


```
<filter>
    <filter-name>Charset Filter</filter-name>
    <filter-class>filter.CharsetFilter</filter-class>
      <init-param>
        <param-name>requestEncoding</param-name>
        <param-value>UTF-8</param-value>
      </init-param>
  </filter>


   <filter-mapping>
    <filter-name>Charset Filter</filter-name>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>
```

oder halt so:

```
<filter>
    <filter-name>Charset Filter</filter-name>
    <filter-class>filter.CharsetFilter</filter-class>
      <init-param>
        <param-name>requestEncoding</param-name>
        <param-value>UTF-8</param-value>
      </init-param>
  </filter>


   <filter-mapping>
    <filter-name>Charset Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
```


----------



## Rumborak (31. Mrz 2006)

Super, danke!

Hat wunderbar gekappt. Wo kann man denn sowas eigentlich nachlesen - bzw. woher weißt Du das?


----------



## mlange8801 (31. Mrz 2006)

> Wo kann man denn sowas eigentlich nachlesen - bzw. woher weißt Du das?



Das hat mich auch schonmal ziemlich viel Zeit gekostet
Den Filter hat ich vom Tomcat Wiki:
wiki.apache.org/tomcat/Tomcat/UTF-8
In der tomcat Mailingliste gibt es auch ein paar Threads dazu...

cu mark


----------



## Rumborak (1. Apr 2006)

Ja, nochmals danke - auch für den Link!

Du hast mir durch deine Antwort sehr geholfen - oft macht  man an so "Kleinigkeiten" ewig rum und kommt nicht weiter...


----------

