美文网首页
Mac safari下载文件乱码

Mac safari下载文件乱码

作者: w_wx_x | 来源:发表于2019-07-11 14:10 被阅读0次

导语:今天测试提了一个Bug,系统中上传附件后,在safari浏览器中下载乱码,其它浏览器正常

如图所示.png

在网上查了一下,发现有很多人提出这个问题,主要是由于编码问题
如何在开发中避免这样的问题出现,这个问题要交给后端(java代码)

/**
* <pre>
* 浏览器下载文件时需要在服务端给出下载的文件名,当文件名是ASCII字符时没有问题
* 当文件名有非ASCII字符时就有可能出现乱码
*
* 这里的实现方式参考这篇文章
* http://blog.robotshell.org/2012/deal-with-http-header-encoding-for-file-download/
*
* 最终设置的response header是这样:
*
* Content-Disposition: attachment;
*                      filename="encoded_text";
*                      filename*=utf-8''encoded_text
*
* 其中encoded_text是经过RFC 3986的“百分号URL编码”规则处理过的文件名
* </pre>
* @param response
* @param filename
* @return
*/
public static void setFileDownloadHeader(HttpServletResponse response, String filename) {
  String headerValue = "attachment;";
  headerValue += " filename=\"" + encodeURIComponent(filename) +"\";";
  headerValue += " filename*=utf-8''" + encodeURIComponent(filename);
  response.setHeader("Content-Disposition", headerValue);
}

/**
* <pre>
* 符合 RFC 3986 标准的“百分号URL编码”
* 在这个方法里,空格会被编码成%20,而不是+
* 和浏览器的encodeURIComponent行为一致
* </pre>
* @param value
* @return
*/
public static String encodeURIComponent(String value) {
  try {
    return URLEncoder.encode(value, "UTF-8").replaceAll("\\+", "%20");
  } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    return null;
  }
}

参考地址:http://ju.outofmemory.cn/entry/133400

相关文章

  • Mac safari下载文件乱码

    导语:今天测试提了一个Bug,系统中上传附件后,在safari浏览器中下载乱码,其它浏览器正常 在网上查了一下,发...

  • 浏览器下载文件时, 文件名乱码的解决方案

    在用 PHP 写文件下载模块时碰到 Safari 浏览器和 IE 浏览器下载文件时, 文件名出现了乱码问题. 在返...

  • java文件下载中文文件名乱码

    java文件下载中文文件名乱码 JAVA文件下载时中文文件名乱码有两种情况: 1、下载时中文文件名乱码; 2、下载...

  • Mac

    Safari下载的文件在哪找到? Safari下载的文件一般会默认存储在硬盘的「下载」文件夹中,大家只需要打开访达...

  • 用 Python 修改下载文件名乱码

    用 Python 修改下载文件名乱码 从互联网下载带有中文名称的文件,下载的文件名中有可能会带有乱码。文件名的乱码...

  • 2021-02-23 关于webarchive的打开问题

    webarchive 文件是 Mac 系统 Safari 浏览器的存档文件,是保存网页内容的特殊文件格式。Mac ...

  • macOS系统降级

    在 Mac 上使用 Safari 浏览器下载 macOS Safari 浏览器会使用以下链接在 App Store...

  • 解决Mac百度云限速

    1.在safari中打开要下载的网盘文件 2.safari的偏好设置中勾选开发菜单 4.拷贝文件下载地址

  • Struts2小知识点

    文件下载时,中文名乱码处理 //文件名中文乱码fileName = new String(fileName.get...

  • 解决 Mac 的 txt 文件乱码

    缘起 经常遇到 txt 文件在 Mac 上显示乱码, 如上图所示. 解决 1. 单个乱码文件的转换 使用 Shel...

网友评论

      本文标题:Mac safari下载文件乱码

      本文链接:https://www.haomeiwen.com/subject/qyarkctx.html