使用java搭建下载文件资源web页面时,如果文件名为中文,会面临下载时乱码的情况,这是由于每个浏览器解析的编码方式不同造成的,以下工具类可以解决该问题:
package utils;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.base64;public class DownLoadUtils { public static String getFileName(String agent, String filename) throws UnsupportedEncodingException { if (agent.contains("MSIE")) { // IE浏览器 filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐浏览器 final base64.Decoder decoder = base64.getDecoder(); final base64.Encoder encoder = base64.getEncoder(); filename = "=?utf-8?B?" + encoder.encodeToString(filename.getBytes("utf-8")) + "?="; } else { // 其它浏览器 filename = URLEncoder.encode(filename, "utf-8"); } return filename; }}