1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <filter> /**定义拦截器**/ <filter-name>charsetFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> /**绑定拦截器**/ <filter-name>charsetFilter</filter-name> <url-pattern>*</url-pattern> </filter-mapping> |
1 2 3 4 5 6 7 8 9 | String fileName = "中文文件"; String encodedFileName = java.net.URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-disposition", String.format("attachment; filename=\"%s.txt\"; filename*=utf-8''%s.txt", encodedFileName, encodedFileName));//为了兼容 IE6,原始文件名必须包含英文扩展名! response.setHeader("Content-Type", "application/octet-stream"); response.setContentType("application/txt;charset=utf-8"); String fileContent = "文件内容"; //response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | String userAgent = request.getHeader("User-Agent"); String fileName = "中文文件"; String encodedFileName = fileName; //for IE core browser if (userAgent.contains("MSIE")||userAgent.contains("Trident")) { encodedFileName = java.net.URLEncoder.encode(fileName, "UTF-8"); } else { //for non IE core browser encodedFileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1"); //模拟浏览器的还原过程 System.out.println(new String(encodedFileName.getBytes("ISO-8859-1"), "UTF-8")); } response.setHeader("Content-disposition", String.format("attachment; filename=\"%s.txt\"", encodedFileName)); response.setHeader("Content-Type", "application/octet-stream"); response.setContentType("application/txt;charset=utf-8"); String fileContent = "文件内容"; PrintWriter out = response.getWriter(); out.write(fileContent); |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |