content-disposition, UTF-8, имя файла
Привет,
Есть сервлет, который выдает файл (возню с самим стримом опускаю):
String fileName = URLEncoder.encode("\u4F60\u597D", "UTF-8");
//Works with chrome, should be ok in IE (not verified)
//response.setHeader("Content-Disposition", "attachment;filename=\""+ fileName +"\"" );
//Fine with Firefox
response.setHeader("Content-Disposition", "attachment; filename*=utf-8''" + fileName );
//Safari?
Имя файла в Save As диалоге для Файрфокса и Хрома так как надо, но вот для Сафари - ничего не могу придумать. mime-encoded не понимает, варианты вышеизложенные также не хавает.
Если так:
String fileName = "\u4F60\u597D";
response.setHeader("Content-Disposition", "attachment; filename=\""+ fileName +"\"" );
то:
curl -I http://localhost:8080/TestFileDownload/DownloadFileServlet
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0
Server: GlassFish Server Open Source Edition 3.0.1
Content-Disposition: attachment;filename="`}"
Content-Type: text/plain;charset=utf-8
Content-Length: 0
Date: Sun, 30 Jan 2011 02:33:38 GMT
Откуда «`}»? Такое впечатление, что забирает из utf-8 sequence latin-1 (60, 7D).
Никто не сталкивался? Спасибо.