关于Tomcat文件下载中文名乱码现象

//获得下载文件的名称
String filename = request.getParameter(“filename”);
//解决获得中文参数的乱码
filename = new String(filename.getBytes(“ISO8859-1”),“UTF-8”);
//获得请求头的User-Agent
String agent = request.getHeader(“User-Agent”);
//根据不同的浏览器进行不同的编码
String filenameEncode = “”;
if (agent.contains(“MSIE”)) {
// IE浏览器
filenameEncode = URLEncoder.encode(filename, “utf-8”);
filenameEncode = filename.replace("+", " ");
} else if (agent.contains(“Firefox”)) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
filenameEncode= “=?utf-8?B?”
+ base64Encoder.encode(filename.getBytes(“utf-8”)) + “?=”;
} else {
// 其它浏览器
filenameEncode = URLEncoder.encode(filename, “utf-8”);
}
//要下载的这个文件的类型 -----客户端根据mime类型区分别
  response.setContentType(this.getServletContext().getMimeType(filename));
  //告诉客户端该文件不是直接解析,而是以附件形式打开,注意filename=
  response.setHeader(“Content-Disposition”, “attachment;filename=”+filenameEncode);
  
  //获取下载文件的绝对路径(相对于apach而言)
  String path = this.getServletContext().getRealPath(“download/”+filename);
  //获取该文件的输入流
  InputStream is = new FileInputStream(path);
  //获取输出流
  ServletOutputStream out = response.getOutputStream();
  //实现文件的拷贝
  int len = 0;
  byte[] bytes = new byte[1024];
  while((len=is.read(bytes))>0) {
   out.write(bytes,0,len);
  }
  is.close();
  //out会自动关闭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【摘录】C语言中利用 strtok函数进行字符串分割

C语言不像Java,Php之类的高级语言,对象中直接封装了字符串的处理函数。C语言中进行普通的字符串处理也经常会让我们焦头烂额……不过好在C语言 中还是提供了像strtok这样功能强大的字符串处理函数,可以帮我们实现部分需要的功能。下面我们介绍一下strtok…

x86汇编指令大全

X86和X87汇编指令大全(有注释) ---------- 一、数据传输指令 ---------------------------------------------------- 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX …

woe分析_Python数据分析—apply函数

在对海量数据进行分析的过程中,我们可能要把文本型的数据处理成数值型的数据,方便放到模型中进行使用。也可能需要把数值型的数据分段进行处理,比如变量的woe化。而这些操作都可以借助python中的apply函数进行处理。今天介绍数据分析的第四课…

树莓派3b安装ubuntu mate(在有显示器前提下看)

树莓派安装: 准备材料 tf卡(建议16G)数据线树莓派win32烧录软件 ,百度云链接:链接:https://pan.baidu.com/s/16Dq2XrqeJScUO_DxHRIz_g 提取码:kfkbubtuntu mate系统(建议不要下ubu…

vb逆向常用函数

1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。 b)__vbaI4Str 将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,…

回车转换成Tab

<script language"javascript" for"document" event"onkeydown"> if(event.keyCode13 && event.srcElement.type!’button’ && event.srcElement.type!’submit’ && event.srcElement.type!’reset’ &&am…

打包mac应用_把网址链接打包成电脑软件的制作方法

前言&#xff1a;学习一下把web页面打包成运行在桌面的应用, 并支持win / mac / linux 等平台, 记一下使用过程, 有需要的大(同)佬(学)可以玩玩~第一步 – 安装 node.jsnode.js下载地址&#xff1a;http://nodejs.cn/download/下载 Windows 安装包 (.msi) 和 Windows 二进制文件…

用eclipse往mysql插入中文出现乱码解决方法

用eclipse往mysql插入中文出现乱码的解决方法 注&#xff1a;我用的是c3p0结合DButils操作数据库 在要从页面获得数据的代码上面设置&#xff1a; request.setCharacterEncoding("UTF-8"); 在c3p0-config文件里设置&#xff1a; <property name"jdbcUrl&…

c++ 中extern C 及#ifdef __cplusplus的作用

浅析extern “C”的作用 关于extern “C”的作用和意思&#xff0c;网上资料已经有很多了&#xff08;我也参考了几篇&#xff09;&#xff0c;不过我还是觉得有必要自己总结一下&#xff0c;毕竟“好记性不如烂笔头”嘛~~ 到C标准函数库的头文件里看看&#xff0c;一般会经常看…

对多个WCF服务进行统一的连接测试

先看下面的代码&#xff1a;代码代码 BasicHttpBinding myBinding newBasicHttpBinding(); EndpointAddress myEndpoint newEndpointAddress(endAddress); ChannelFactory<IMyService>myChannelFactory newChannelFactory<IMyService>(myBinding,my…

宜昌宝塔河项目_宜昌城区首个垃圾分类定时定点投放点启用 厨余垃圾破袋投放...

伍家岗区宝联社区黄龙小区的垃圾分类定时定点投放点启用。(市环境卫生管理处供图)(记者郑璐、通讯员陈赞)1月1日&#xff0c;宜昌城区首个垃圾分类定时定点投放点在伍家岗区宝塔河街办宝联社区黄龙小区正式启用。该投放点每天开放5小时&#xff0c;上午7&#xff1a;00-9:30&am…

eclipseweb开发response和request接收发送数据乱码问题

第一种&#xff1a;request接收到的数据出现乱码&#xff1a; 在request接收数据前面设置如下代码 requset.setCharacterEncoding("UTF-8);reponse往页面写中文出现乱码&#xff1a; 在要往页面输入内容前面设置&#xff1a; response.setContentType("text/html;…

C++函数名的修饰规则

我们知道在C中有函数重载这样一个东西&#xff0c;当我们定义了几个功能类似且函数名是一样的函数的时候&#xff0c;只要它的参数列表不同&#xff0c;编译是可以通过的&#xff0c;但是在C中是不可以的。 double add(double a, double b) { return a b; } int add(int …

装配图位置偏转怎么调整_物理微课|匀变速直线运动、电容器动态分析及磁偏转技巧、方法、模型...

匀变速直线运动三大推论是什么&#xff1f;如何利用它们快速解题&#xff1f;电容器动态分析的重点是什么&#xff1f;磁偏转问题有什么严谨好用的技巧和方法&#xff1f;物理侯老师为您详细解答以上问题。高一匀变速直线运动三大推论 匀变速直线运动是我们高中学的第一个变速…

Cooki模拟登陆(人人网)

我们在爬取网上一些数据时&#xff0c;必须登陆才能爬取到数据&#xff0c;这是我们就需要Cookie了&#xff0c;Cookie简单说就是服务器返回给我们的一些数据&#xff0c;保存到客户端&#xff0c;下次登陆时&#xff0c;服务器会识别这些数据&#xff0c;可以返回我们上次的数…

静态变量与动态变量

0.静态存储与动态存储 1&#xff09;静态存储变量通常是在变量定义时就分定存储单元并一直保持不变&#xff0c;直至整个程序结束。静态变量&#xff0c;全局动态变量都是静态存储 2&#xff09;动态存储变量是在程序执行过程中&#xff0c;使用它时才分配存储单元&#xff0c…

基本图形怎么改字体_PPT做得慢怎么办?掌握这6个技巧,你也能快速做出精美的PPT...

相信很多人做PPT的速度都比较慢&#xff0c;从新建一个空白PPT开始&#xff0c;再到排版设计&#xff0c;需要耗费大量的时间&#xff0c;下面就来教你这6个技巧&#xff0c;你也能快速做出精美的PPT。01.一键禁止动画最近&#xff0c;有很多小伙伴向我求助&#xff0c;问我怎样…

js eval()函数

JS eval()函数转自&#xff1a;http://www.86822.com/code/zw.asp?id614 eval()函数 JavaScript有许多小窍门来使编程更加容易。 其中之一就是eval()函数&#xff0c;这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。 举个小例子&#xff1a;…

vs 2019编写汇编并运行调试

前言 我是上学期学的汇编&#xff0c;因为有vs又不想用课上教的麻烦的dosbox以及masm32&#xff0c;但是一直没找到高亮插件和能调试的&#xff08;难在运行不了而找不到答案上&#xff0c;出现的错误在最后放出&#xff0c;还请先达们不吝指点&#xff09;汇编代码所以放弃了。…

三菱880彩铅和uni的区别_孟祥雷丨清华美院毕业,彩铅界的“冷军”(附彩铅教程哦!)...

今天要分享的是妥妥的一个高冷帅气、又有才华的艺术家&#xff0c;毕业于清华大学美术学院。有20多年的绘画经验&#xff0c;设计、绘画等艺术多面手&#xff0c;彩铅是他最出名的作品之一。人物篇(逆光)(麻花辫)用彩铅画肖像人物的人很多&#xff0c;但能把人物塑造得维妙维俏…