Java本地化文件名

前端之家收集整理的这篇文章主要介绍了Java本地化文件名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 java.Current中设置本地化文件名每次我点击我的应用程序中具有非ascii文件名的本地化文件时,会弹出 Windows保存对话框,但如果字符集是ISO-以上的任何内容,则它不能正确显示文件名88859-1.

这是我保存文件代码.

  1. InputStream inputStream = null;
  2. try {
  3. response.resetBuffer();
  4. response.setContentType(fileStream.getContentType());
  5. response.setContentLength((int) fileStream.getContentLength());
  6. response.addHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
  7. ServletOutputStream stream = response.getOutputStream();
  8. byte[] buffer = new byte[1024];
  9. int read = 0;
  10. int total = 0;
  11. inputStream = fileStream.getInputStream();
  12. while ((read = inputStream.read(buffer)) > 0) {
  13. stream.write(buffer,read);
  14. total += read;
  15. }
  16. response.flushBuffer();
  17. } finally {
  18. if (inputStream != null) {
  19. inputStream.close();
  20. }
  21. }

如果有人可以就如何解决这个问题分享他们的想法,我会非常有帮助.
提前致谢.

解决方法

古斯塔夫说的是正确的,但它并没有让你到达你想成为的地方. RFC 2231允许您为非ASCII Content-Type和Content-Disposition参数使用替代格式,但并非所有浏览器都支持它.遗憾的是,最可能工作的方式是忽略RFC 2183所说的内容并在响应中使用 RFC 2047 encoded-words
  1. response.addHeader("Content-Disposition","attachment; " +
  2. "filename=\"" + MimeUtility.encodeWord(fileName,"utf-8","Q") + "\"");

请注意,这可能不适用于所有浏览器. IE的某些变体要求您对值进行URL编码:

  1. response.addHeader("Content-Disposition","attachment; filename=" + URLEncoder.encode(filename,"utf-8"));

猜你在找的Java相关文章