java实现浏览器下载附件时文件名中文乱码解决方案

这篇具有很好参考价值的文章主要介绍了java实现浏览器下载附件时文件名中文乱码解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方案一:URLEncoder 解决 IE 和 谷歌浏览器的附件中文名问题。
如果客户端浏览器是 IE 浏览器 或者 是谷歌浏览器。我们需要使用 URLEncoder 类先对中文名进行 UTF-8 的编码 操作。 因为 IE 浏览器和谷歌浏览器收到含有编码后的字符串后会以 UTF-8 字符集进行解码显示。

// 把中文名进行 UTF-8 编码操作。
String str = "attachment; fileName=" + URLEncoder.encode("中文.jpg", "UTF-8");
// 然后把编码后的字符串设置到响应头中
response.setHeader("Content-Disposition", str);

方案二:BASE64 编解码解决火狐浏览器的附件中文名问题
如果客户端浏览器是火狐浏览器。 那么我们需要对中文名进行 BASE64 的编码操作。
因为火狐使用的是 BASE64 的编解码方式还原响应中的汉字。所以需要使用 BASE64Encoder 类进行编码操作。

// 使用下面的格式进行 BASE64 编码后
String str = "attachment; fileName=" + "=?utf-8?B?"
+ new BASE64Encoder().encode("中文.jpg".getBytes("utf-8")) + "?=";
// 设置到响应头中
response.setHeader("Content-Disposition", str);

方式三(推荐):通过判断请求头中 User-Agent 这个请求头携带过来的浏览器信息即可判断出是什么浏览器,来解决不同编解码方式。文章来源地址https://www.toymoban.com/news/detail-837907.html

String ua = request.getHeader("User-Agent");
// 判断是否是火狐浏览器
if (ua.contains("Firefox")) {
    // 使用下面的格式进行 BASE64 编码后
    String str = "attachment; fileName=" + "=?utf-8?B?"
        + new BASE64Encoder().encode("中文.jpg".getBytes("utf-8")) + "?=";
    // 设置到响应头中
    response.setHeader("Content-Disposition", str);
} else {
    // 把中文名进行 UTF-8 编码操作。
    String str = "attachment; fileName=" + URLEncoder.encode("中文.jpg", "UTF-8");
    // 然后把编码后的字符串设置到响应头中
    response.setHeader("Content-Disposition", str);
}

到了这里,关于java实现浏览器下载附件时文件名中文乱码解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python selenium与pyautogui控制浏览器实现modis数据自动下载

    目录 序言: 准备工作: 基本思路: 完整代码:         上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了selenium的一些操作,所以写这个代码做了一些测试。         本文章只需要

    2024年02月11日
    浏览(50)
  • Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式

    ----在我们做文件上传时,通常会保存文件的相对路径在数据库中,然后返回前端http访问路径,来对文件进行下载或图片预览功能,但是有时候我们并不想直接返回文件访问地址给前端,这就用到了Java当中的文件输入输出流,将文件以流的方式响应给浏览器,并渲染出图片或

    2024年02月03日
    浏览(60)
  • Java 中,使用 HttpServletResponse 对象将服务器上的文件响应到客户端浏览器进行下载

    在服务器端,使用 FileInputStream 打开要下载的文件,并将其读取到字节数组中。 2.设置 HttpServletResponse 的响应头信息,告诉浏览器需要下载文件,并指定文件名和文件类型 其中,Content-Type 表示响应内容的类型,这里设置为 application/octet-stream,表示二进制流。Content-Length 表示

    2024年02月13日
    浏览(67)
  • JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地

    需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地 难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点 2.如何使用计算类,由于我的类是和占位符绑定的,什么样的

    2024年02月16日
    浏览(47)
  • 手机浏览器怎么下载视频,第三方手机浏览器下载视频的方法

    在我们的手机中,总少不了一款手机浏览器。很多人经常使用手机浏览器看视频,那么如何在网页中将喜欢的视频下载下载下来呢?下面给大家讲解UC浏览器、多御安全浏览器、QQ浏览器下载视频的方法,有需要的朋友可以继续往下看。   UC浏览器下载视频的方法 1、打开手机

    2024年02月08日
    浏览(64)
  • JAVA使用selenium实现后台浏览器截图(含代码+docker打包)

    最近接到一个特殊需求,需要每天定时截图某网站首页,保存备查,因此使用JAVA实现了后台截图。 下面是完整的方法。 JAVA实现浏览器截图,浏览器选用的是chrome,使用selenium-java依赖。selenium可以帮助我们调用浏览器,完成想要的功能。 由于是后台截图,不需要显示界面,

    2024年03月13日
    浏览(42)
  • ChromeDriver | 谷歌浏览器驱动下载地址 及 浏览器版本禁止更新

    在使用selenoum时,需要chrome浏览器的版本和chrome浏览器驱动的版本一致匹配,才能进行自动化测试 国内可以搜到的谷歌浏览器下载地址里面最新的驱动器只有114版本的 CNPM Binaries Mirror 在其他博主那找到了最新版本12X的谷歌驱动器下载地址,里面有最新的版本:Chrome for Testin

    2024年02月21日
    浏览(109)
  • java + Selenium 实现自动化测试,模拟人手点击操作 chrome 浏览器

    引入 maven 依赖: 安装 chromeDriver:略 SeleniumUtils.java: ChromeDriverUtils.java: 使用示例:

    2024年02月11日
    浏览(60)
  • selenium浏览器驱动下载

    Chrome 谷歌浏览器 下载地址:http://chromedriver.storage.googleapis.com/index.html 不同的Chrome的版本对应的chromedriver.exe 版本也不一样,下载时不要搞错了。 如果是最新的Chrome, 下载最新的chromedriver.exe 就可以了。 Firefox 火狐浏览器 驱动下载地址为:https://github.com/mozilla/geckodriver/relea

    2024年02月15日
    浏览(55)
  • 成功解决:下载的谷歌浏览器,打开却是“2345浏览器”,方法亲测有效

     试了网络上提及到的各种方法: 找到谷歌浏览器源文件位置,修改.exe文件命名。重新启动结果无效  方法一卒 同时也试了第二种方法 打开谷歌浏览器,在地址栏输入 chrome://version 进入谷歌浏览器的属性 看黄色部分有没有其他网址信息,有的话在右击浏览器属性命名处进行

    2024年02月06日
    浏览(216)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包