Spring mvc文件下载IE/Edge中文乱码解决

编程教程 > Java > Spring (2175) 2024-11-26 14:39:04

引言

    在spring mvc项目开发中,我们可能经常遇到文件的上传和下载操作。这里将讲解在IE/Edge浏览器中文件下载中文乱码的解决方法。

一.解决spring mvc IE/Edge浏览器乱码

编写controller测试代码:
package net.xqlee.project.controller;

import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class FileController {
	/**
	 * 文件下载
	 * 
	 * @param request
	 * @param response
	 */
	@GetMapping("download.do")
	public void downloadFile(HttpServletRequest request, HttpServletResponse response) {
		try {
			String fileName = "中文测试.DAT";
			response.getWriter().write("中文测试你好");
			fileName = dealFileName(request, fileName);
			response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
		} catch (Exception e) {
			e.printStackTrace();// logger
		}
	}

	/**
	 * 处理IE/Edge(win10)浏览器中文乱码
	 * 
	 * @param request
	 * @param fileName
	 * @return
	 */
	public String dealFileName(HttpServletRequest request, String fileName) {
		try {
			String codeFileName = "";
			String agent = request.getHeader("User-Agent");
			if (agent == null) {
				return fileName;
			}
			agent = agent.toUpperCase();
			if (null == agent) {
				codeFileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
			} else if (-1 != agent.indexOf("MSIE") || -1 != agent.indexOf("TRIDENT") || -1 != agent.indexOf("EDGE")) {
				codeFileName = URLEncoder.encode(fileName, "UTF-8");
			} else {
				codeFileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
			}
			return codeFileName;
		} catch (Exception e) {
			e.printStackTrace();// logger
			return fileName;
		}
	}
}

注意观察上面的代码,解决乱码主要在dealFilename();这个方法中进行处理的。FileName进行get UTF8字符集是因为当前代码的编码格式为UTF-8如果是GBK则更改为GBK

二.测试IE/Edge浏览器中文乱码的解决

2.1启动刚才controller所在的项目。

2.2访问文件下载地址查看结果

文件下载地址为:http://localhost:8080/download.do

观察IE浏览器:
Spring MVC IE浏览器乱码解决测试结果

从上图可以看到中文已经正常显示。接下来测试win10的Edge浏览器:
Spring MVC Edge浏览器乱码解决测试结果从上图也能看到中午呢乱码问题已经得到解决。
 

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Spring mvc文件下载IE/Edge中文乱码解决,在spring mvc项目开发中,我们可能经常遇到文件的上传和下载操作。这里将讲解在IE/Edge浏览器中文件下载中文乱码的解决方法。
Spring框架5.0,spring mvc 5.0入门教程。DispatcherServlet的详细讲解配置以及spring mvc5.0的helloword程序
Spring Context 与Spring MVC Context那些坑
springmvc集成logback不打印spring mvc启动日志解决
spring mvc采用mapping代码方式配置项目的默认首页注意事项,spring mvc,默认首页,spring
​Spring Boot 或者Spring MVC 判断请求类型是否为Ajax请求具体如下:public static boolean isAjaxRequest(HttpServletRequ...
spring mvc项目是spring的一个子项目用于处理视图层的请求,类似Struts框架。302跳转很简单:@RequestMapping(value =
在这个Spring5教程中,学习创建Spring 5 MVC Web应用程序,处理表单提交,集成hibernate连接到后端数据库,以及添加用于输入表单字段验证的hibernate验证器。
spring mvc aop对controller切面编程无效解决,在初步使用Spring MVC框架中使用切面的时候可能会遇到AOP对controller层切面无效。这其实是spring容器的...
前言 Java编程中发邮件也是常用的。但是原生的jdk自带的发送邮件用起来还是比较麻烦的。spring框架在Java语言中完全是神一样的存在,通过spring框
       ​Spring Boot       这里主要对Spring Boot 项目和Spring MVC 相关项目中,日期参数的使用以及Ajax请求日期数据返回格式的处理
本文主要说明在spring mvc框架中如何接收前端发过来的集合对象和相关的处理。主要讲解两种方式,form表单提交方式和ajax提交的方式
Java编程中spring mvc 获取请求ip,springmvc 获取访问ip
Spring MVC 5 接受对象集合参数实战,在之前,我一直以为http传输的参数是KEY-VALUE键值对的方式和文件流的形式。直到最近遇到新需求才知道还有一种RAW的数据类型。通过这种原生...