LINUX.ORG.RU

content-disposition, UTF-8, имя файла


0

1

Привет,

Есть сервлет, который выдает файл (возню с самим стримом опускаю):

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).

Никто не сталкивался? Спасибо.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.