Java 本地化文件名

2023-12-27

我如何在java中设置本地化文件名。目前,每次我单击应用程序中具有非ascii文件名的本地化文件时,都会弹出Windows保存对话框,但如果字符集高于ISO-,则它不会正确显示文件名88859-1。

这是我保存文件的代码。

            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();
  }
 }

如果有人可以分享他们关于如何解决此问题的想法,我将非常有帮助。 提前致谢。


gustafc 说的是正确的,但它并不能让你到达你想去的地方。RFC 2231 https://www.rfc-editor.org/rfc/rfc2231允许您使用非 ASCII 的替代格式Content-Type and Content-Disposition参数,但并非所有浏览器都支持。不幸的是,最有可能起作用的方法是忽略 RFC 2183 的内容并使用RFC 2047 编码字 https://www.rfc-editor.org/rfc/rfc2047在响应中:

response.addHeader("Content-Disposition", "attachment; " +
    "filename=\"" + MimeUtility.encodeWord(fileName, "utf-8", "Q") + "\"");

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

response.addHeader("Content-Disposition",
    "attachment; filename=" + URLEncoder.encode(filename, "utf-8"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 本地化文件名 的相关文章

随机推荐

  • Spring Boot 应用程序的 JUnit @BeforeClass 非静态解决方法

    JUnit s BeforeClass如果您希望注释在所有注释之前运行一次 则必须将注释声明为静态 Test方法 但是 这不能与依赖注入一起使用 我想清理我的数据库 Autowire在运行 JUnit 测试之前使用 Spring Boot
  • 使用“Simple HTML DOM”获取两个跨度之间的文本

    基本上 我需要获取两个跨度标签之间的文本 并且我尝试了很多不同的方法但没有解决方案 我也在使用 Simple HTML DOM Parser http simplehtmldom sourceforge net 所以我能做的有点受限 这是基
  • 如何使用 Win32 设置组框标题的字体和颜色

    我被 WIN32 困住了 没有 NET 或任何托管的东西 WM CTLCOLORSTATIC 是控制组框标题颜色的正确方法 但是 它不再起作用 如果您的应用程序使用清单来包含版本 6 comctl 库 则 Groupbox 控件将不再发送W
  • 在大字典中查找某个单词的存在性

    假设我有一本包含 2 亿单词的平面文件大字典 并且我的函数需要检查字典中是否存在任何给定单词 那么最快的方法是什么 你不能将字典存储在内存中 因为你只有 1GB 内存 您可以将其存储在数据库中 但是如果没有任何优化 查询它仍然会非常非常慢
  • 将 .gitignore 应用到提交的文件

    我已经提交了大量文件 现在我想忽略它们 我怎样才能告诉 git 现在忽略未来提交中的这些文件 编辑 我也想从存储库中删除它们 它们是在构建后创建的文件或用于特定于用户的工具支持 编辑后 gitignore要匹配被忽略的文件 你可以这样做gi
  • 在这种情况下,到底什么是内存泄漏?

    为了清除所有后台活动 我执行了以下操作 我保留了一个静态数组列表 每当我从一个活动转到另一个活动时 在新活动的 onCreate 方法中 我将当前活动的对象添加到该列表中 如下所示 SomeClass addActivity Current
  • 使用 jquery-out-of-the-box 测试空字符串的最佳方法是什么?

    使用 jquery out of the box 即无需插件 测试空字符串的最佳方法是什么 我试过this http zipalong com blog p 287 但它至少不能开箱即用 使用内置的东西会很好 我不想重复 if a null
  • 局部变量地址可以保留在返回指针的函数中吗

    include
  • jquery:中止ajax会触发完成还是失败?

    我不明白关于 ajax done 和 fail 的事情 我开始我的 ajax 调用 将其分配给一个变量 在下一个 ajax 调用中 我测试变量是否已定义 然后调用 abort 我无法理解 abort 是否会导致 done 的执行 如果它导致
  • 范围输入类型的步长参数

    是否可以为范围元素内的步骤参数指定小数 根据我读过的几篇文章 其中一篇关于Nettuts http net tutsplus com tutorials html css techniques rethinking forms in htm
  • 参数化查询中的参数计数不匹配

    出于性能原因 我在代码中使用了大量参数化查询 简而言之 有些有效 有些无效 我在构建数据库包装期间初始化查询 如下所示 QString querystring QString SELECT somevalue FROM sometable
  • Typescript动态创建界面

    我使用 simple schema 在对象中定义数据库模式 name string age integer 是否可以通过某种方式从该对象创建接口或类 这样我就不必将所有内容输入两次 您可以这样做 但它可能会带来更多的麻烦 而不是它的价值 除
  • Hibernate 使用 orphanRemoval 触发约束违规

    我在 JPA Hibernate 3 5 3 设置方面遇到问题 其中我有一个实体 一个 Account 类 它有一个子实体列表 Contact 实例 我试图能够将联系人的实例添加 删除到帐户的 List 属性中 将新实例添加到集合中并调用
  • vagrant box + 变量VVV的正确备份和恢复方法

    我的 MacBook 上安装了一个 vagrant box ubuntu trusty64 我用变量 VVV 扩展了这个框 gt https github com bradp vv os x installation https githu
  • 如何在 Rascal 中将值类型转换为 Map?

    我有一个存储映射的值类型变量 但我无法通过提供键来访问这些值 rascal gt a value s s rascal gt a s stdin 2 3 lt 1 2 gt lt 1 5 gt subscript not supported
  • sql:如果另一列在命名空间中引起冲突,则更新列

    我有一个 SQL 表 其中包含包列表 10000 个唯一条目的顺序 以及任何给定包的相应类别 100 个唯一条目的顺序 给定的包可以属于多个类别 15000 个唯一组合的顺序 这就是表的大小 所有包名称都应该是唯一的 并且不与类别名称冲突
  • 更新 Visual Studio 中的现有架子

    Visual Studio 2013 可以更新现有架子吗 我继续编辑我的文件 现在我想用当前工作区的最新版本更新架子 事实证明 您只需创建一个同名的新架子 然后确认 替换架子集 即可 愚蠢的tfs
  • 如何访问 Model ZF2 中的 getServiceLocator

    我正在尝试访问模型中的 getServiceLocator 函数 它在控制器中工作 但是当我将它移动到模型中时 我在尝试访问时得到 NULL Call to a member function get on null 下面的链接似乎提供了一
  • C++ 和 Python:从 python 向 c++ 传递并返回 2D 双指针数组

    我想将一个 2D 数组从 Python 传递到 C 函数 然后将一个相同类型 相同维度的数组返回给 Python 我知道这个问题已经被问过好几次了 但我一直无法找到与我的问题相关的答案 对于我的问题 我必须使用双指针数组并让函数返回双指针数
  • Java 本地化文件名

    我如何在java中设置本地化文件名 目前 每次我单击应用程序中具有非ascii文件名的本地化文件时 都会弹出Windows保存对话框 但如果字符集高于ISO 则它不会正确显示文件名88859 1 这是我保存文件的代码 InputStream