response文件流输出文件名中文不显示的解决

网友投稿 1477 2022-11-03

response文件流输出文件名中文不显示的解决

response文件流输出文件名中文不显示的解决

目录文件流输出文件名中文不显示使用如下方法没有解决解决方法response-时中文文件名乱码

文件流输出文件名中文不显示

response返回文件流 用response.setHeader(“Content-disposition”, “attachment; filename=”+fileName);结果中文名称以“—”下滑下显示。

使用如下方法没有解决

response.setCharacterEncoding(“UTF-8”);

response.setContentType(“text/html;charset=UTF-8”);

response.setLocale(new java.util.Locale(“zh”,“CN”));

原因是这些操作是针对返fgIUFuufb回内容进行编码设置,而我这里文件名称设置于header;

解决方法

将文件名称转换为ASCII码~

如下:

// 一万行代码没有显示

OutputStream output = null;

try {

response.reset();

response.setContentType("application/msexcel;charset=UTF-8");

// response.setCharacterEncoding("UTF-8");

fileName = URLEncoder.encode(fileName,"UTF-8");

output = response.getOutputStream();

response.setHeader("Content-disposition", "attachment; filename="+fileName);

wb.write(output);

if(output != null) output.close();

} catch (IOException e) {

// TODO

e.printStackTrace();

}

response-时中文文件名乱码

FileInfo info = new FileInfo(strFilePath);

long fileSize = info.Length;

Response.Clear();

Response.Buffer = true;

Response.ContentType = "application/x-zip-compressed";

Response.AddHeader("Accept-Language", "zh-cn");

Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(info.Name));

//不指明Content-Length用Flush的话不会显示-进度

Response.AddHeader("Content-Length", fileSize.ToString());

Response.TransmitFile(strFilePath, 0, fileSize);

Response.Flush();

Response.Close();

info.Delete();

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学习laravel玩的小项目
下一篇:Lombok同时使⽤@Data和@Builder 的坑
相关文章

 发表评论

暂时没有评论,来抢沙发吧~