Làm thế nào tôi có thể đặt tên tập tin được bản địa hoá trong java. Hiện tại, tôi nhấp vào một tệp đã được bản địa hóa có tên tệp không phải ascii trong ứng dụng của tôi, hộp thoại cửa sổ lưu bật lên, nhưng không hiển thị tên tệp đúng nếu bộ ký tự là bất kỳ thứ gì bên trên ISO-88859-1.Tên tập tin được bản địa hóa Java
Đây là mã của tôi đang lưu tệp.
InputStream inputStream = null;
try {
response.resetBuffer();
response.setContentType(fileStream.getContentType());
response.setContentLength((int) fileStream.getContentLength());
response.addHeader("Content-Disposition",
"attachment;filename=\"" + fileName + "\"");
ServletOutputStream stream = response.getOutputStream();
byte[] buffer = new byte[1024];
int read = 0;
int total = 0;
inputStream = fileStream.getInputStream();
while ((read = inputStream.read(buffer)) > 0) {
stream.write(buffer, 0, read);
total += read;
}
response.flushBuffer();
} finally {
if (inputStream != null) {
inputStream.close();
}
}
Tôi sẽ rất hữu ích nếu ai đó có thể chia sẻ ý tưởng của họ về cách giải quyết vấn đề này. Cảm ơn trước.
DKarp, Mã này thực sự hữu ích. Bây giờ tôi có thể nhận được kết quả mong muốn trên tất cả các trình duyệt khác ngoài IE. Với IE trong khi tải xuống tệp, nó sẽ mã hóa tên tệp để hiển thị ở định dạng thích hợp nhưng nó thêm toàn bộ URL vào nó và khi tôi cố gắng tải xuống tệp .xls, nó sẽ hiển thị hộp tiến trình tải xuống với cảnh báo trên đó có nội dung là "Internet Explorer không thể mở trang web này. Trang web không khả dụng hoặc không thể tìm thấy. " Tôi một lần nữa muốn bạn chỉ cho tôi đi đúng hướng. Cảm ơn sự giúp đỡ của bạn. – Hitatichi
Mã bạn đang sử dụng để đặt tiêu đề 'Nội dung-Bố cục 'cho IE là gì? Tôi nghĩ rằng một số phiên bản của IE có thể không xử lý tốt với tiêu đề gấp, do đó hãy chắc chắn không đặt thêm một dòng mới trong tiêu đề ... – dkarp
Tôi đã sử dụng URLEncoder cho IE chính xác như bạn đã chỉ định trong câu trả lời. response.addHeader ("Content-Disposition", "tệp đính kèm; filename =" + URLEncoder.encode (tên tệp "utf-8")); – Hitatichi