Java-文件下载中文乱码

2019-04-19 14:56:42

解决乱码

  1. package com.common.file;
  2. import javax.servlet.http.HttpServletRequest;
  3. import java.io.UnsupportedEncodingException;
  4. import java.net.URLEncoder;
  5. /**
  6. * 文件下载浏览器编码工具
  7. */
  8. public class FileBrowserUtil {
  9. /**
  10. * 根据不同浏览器 User-Agent,生成不同的 Content_disposition
  11. *
  12. * @param fileName
  13. * @param request
  14. * @return
  15. * @throws UnsupportedEncodingException
  16. */
  17. public static String getContentDisposition(String fileName, HttpServletRequest request) throws UnsupportedEncodingException {
  18. String content_disposition = "";
  19. String userAgent = request.getHeader("User-Agent");
  20. // 针对IE或者以IE为内核的浏览器:
  21. if (userAgent.contains("Safari")) {
  22. // name.getBytes("UTF-8")处理safari的乱码问题
  23. byte[] bytes = fileName.getBytes("UTF-8");
  24. // 各浏览器基本都支持ISO编码
  25. fileName = new String(bytes, "ISO-8859-1");
  26. // 文件名外的双引号处理firefox的空格截断问题
  27. content_disposition = String.format("attachment; filename=\"%s\"", fileName);
  28. } else {
  29. fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
  30. content_disposition = "attachment;filename=" + fileName;
  31. }
  32. return content_disposition;
  33. }
  34. }

0
1
0

添加评论

正在回复:
取消
1
0
1
0