T
tuxedo
Gast
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:
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:
Der Name der Datei wandert dann in eine PostgresDB. Die hat auch UTF-8 eingestellt.
Des weiteren hab ich JBoss in
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
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...
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:
HTML:
<!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:
Java:
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
Code:
<jboss-root>/server/all/deploy/jboss-web.deployer/server.xml
[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
Code:
getCharacterEncoding()
[update2]
andere formularfelder kommen mit den Umlauten prima zurecht. Es geht also nur bei Filenamen mit multipart/form-data nicht...
Zuletzt bearbeitet von einem Moderator: