# JBoss + Servlet + HTML Fileupload + Encoding



## tuxedo (26. Nov 2009)

Hallo,

habe ein kleines Problem:

Ich hab ein HttpServlet das es mir erlaubt Files per HTML Formular hochzuladen. Mit "normalen" Filenamen klappt das bestens. Doch sobald der Name Umlaute beinhaltet wird der Name auf dem Server verstümmelt.

Hier mal ein paar Details:

Das HTML-Formular sieht so aus:


```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
	<title>...</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body style="font: normal normal normal 11px/normal Verdana,Arial,Helvetica,sans-serif; font-size: 11px;">
...
...
<form action="mediaconfiguration?action=putmultipart&path={path}" method="post" enctype="multipart/form-data">
	Choose the file to upload:<br/>
	<input name="file" type="file" size="35" style="width: 350px">
	<input type="submit" value="upload file" style="width: 110px"><br/>
</form>
...
...
</body></html>
```

So. Wenn ich die Seite in Firefox öffne krieg ich auch angezeigt dass die Seite UTF-8 als Encoding benutzt. Soweit so gut.

Im Servlet hab ich dann eingestellt dass sowohl Request als auch Response mit UTF-8 codiert sind:


```
request.setCharacterEncoding("UTF-8"); // force/ensure UTF-8
response.setCharacterEncoding("UTF-8"); // ....
```

Der Name der Datei wandert dann in eine PostgresDB. Die hat auch UTF-8 eingestellt.

Des weiteren hab ich JBoss in 
	
	
	
	





```
<jboss-root>/server/all/deploy/jboss-web.deployer/server.xml
```
 eingestellt, dass er UTF-8 als Encoding benutzen soll:

[XML]    <Connector port="80" address="${jboss.bind.address}"    
         maxThreads="250" maxHttpHeaderSize="8192"
         emptySessionPath="true" protocol="HTTP/1.1"
         enableLookups="true" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />[/XML]

Das alles hilft nur leider nix.

Wenn ich auf der Upload-Seite in Firefox einstelle dass er statt UTF-8 einfach ISO-8859-1 benutzen soll und damit die File hochlade, dann wird sie richtig gespeichert.

Aus irgend einem mir unsersichtlichen Grund werden die Formulardaten im falschen Encoding gesendet. Auch das auskommentieren der forcierten UTF-8 benutzung im Servlet-Code bringt keine besserung.

Was habe ich übersehen? Wie bringt ich Firefox (automatisch) dazu im richtigen Encoding zu senden?

Der IE hat übrigens das gleiche Problem...

- Alex

[update]

Wenn ich den request mit 
	
	
	
	





```
getCharacterEncoding()
```
 nach seinem encoding frage bekomme ich immer "null" zurück was laut doku besagt dass das Encoding unbekannt ist...

[update2]

andere formularfelder kommen mit den Umlauten prima zurecht. Es geht also nur bei Filenamen mit multipart/form-data nicht...


----------



## tuxedo (26. Nov 2009)

Problem gefunden.... In meinem Multipart-Request-Handler waren die Strings noch hardcodiert auf ISO-Format statt UTF-8


----------

