java下载文件时文件名出现乱码的解决办法:
String userAgent = request.getHeader("User-Agent"); String formFileName = file.getFileName(); // 针对IE或者以IE为内核的浏览器: if (userAgent.contains("MSIE") || userAgent.contains("Trident")) { formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8"); } else { // 非IE浏览器的处理: formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1");
} response.setHeader("Content-disposition",String.format("attachment; filename=\"%s\"", formFileName)); response.setContentType("multipart/form-data"); response.setCharacterEncoding("UTF-8");
扩展:
乱码指的是程序显示出来的字符文本无法用任何语言去解读。一般情况下会包含大量的?。本质上都是由于字符串原本的编码格式与读取时解析用的编码格式不一致导致的。
中文变成看不懂的字符:如果一串中文字符变成了一串看不懂的字符如:"Ì Ô £ ¡Î Ò Ï²»¶ £ ¡",这种情况通常是编码字符集与解码时所用的字符集不一致所造成的。比如使用GBK编码,如果使用ISO-8859-1解码的话结果就是这样。
一个汉字变成了一个问号:如果编码和解码的字符集都是一致的,那么可以确定该字符编码不支持中文,例如:ISO-8859-1
一个汉字变成了两个问号:中文经过多次编码且其中有一次编码或者解码使用了不支持中文的字符集。
以上就是java中文件下载时文件名乱码的解决方法的详细内容,更多请关注亿速云其它相关文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。