为啥response.setheader方法含中文 乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥response.setheader方法含中文 乱码相关的知识,希望对你有一定的参考价值。

参考技术A f(isset($_POST['submit'])&&$_POST['submit']=='提交')
3 //判断是否是提交过来的
4 $intext = $_POST['intext'];
5 if($intext!=null||$intext!='')
6 $link = mysql_connect("localhost", "root", "123456");
7 //数据库配置信息 第一个参数数据库位置第二个是用户名第三个是密码
8 mysql_select_db("szn_test");
9 //设置要使用的数据库
10 $sql = "select * from demo where res = '".$intext."'";

java poi导出excel response.setHeader设置导出文件名抓包不合法及处理导出文件名为action方法名

问题出现1:

spring MVC 框架下使用poi导出excel,设置导出文件名:response.setHeader("Content-Disposition", "attachment;filename=" +sourceId+"_"+dateString+".xls");

该方法进行抓包测试时,显示BUG url不合法。

解决办法:对 "attachment;filename=" +sourceId+"_"+dateString+".xls" 进行String fileNmae = URLEncoder.encode("attachment;filename="+sourceId+"_"+dateString+".xls",StandardCharsets.UTF_8.displayName()); 再response.setHeader("Content-Disposition", fileNmae);

 

但是出现新的问题2:poi导出excel时,导出文件名为action 方法名。

解决办法:使用 new String(byte[],"utf-8");编码

String fileName = "attachment;filename="+sourceId+"_"+dateString+".xls";
response.setHeader("Content-Disposition", new String(fileName.getBytes(), "utf-8"));

 

最终解决:抓包测试通过。

 


以上是关于为啥response.setheader方法含中文 乱码的主要内容,如果未能解决你的问题,请参考以下文章

301重定向:为啥连接关闭?

通过response.setHeader方法设置头文件

response.setheader(“刷新”,“0”)不工作

java poi导出excel response.setHeader设置导出文件名抓包不合法及处理导出文件名为action方法名

response.setHeader()下载的用法

response.setHeader()用法