这篇文章主要介绍“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”));
原因是这些操作是针对返回内容进行编码设置,而我这里文件名称设置于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) {// TODOe.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();
到此,关于“response文件流输出文件名中文不显示怎么办”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!