首页 >Java >java教程 > 正文

java下载文件中文文件名乱码

原创2020-01-16 10:27:2801218

问题引出:

上传中文命名的图片,下载显示不了中文名称。

如图:

d2368f5a23bc23b991557df3303da45.png

(相关视频教程推荐:java视频教程

解决方法:

1、sping-mvc.xml部分代码:

	<!-- 上传文件的处理器 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置默认编码 解决了上传文件名乱码的问题 -->
		<property name="defaultEncoding" value="utf-8"></property>
		<!-- 上传图片最大大小5M -->
		<property name="maxUploadSize" value="5242440"></property>
	</bean>

2、FileController.java中文文件名获取代码:

获取浏览器格式,根据不同浏览器控制文件名编码格式。

String userAgent = request.getHeader("User-Agent");//获取浏览器名(IE/Chome/firefox)
if(userAgent.contains("MSIE")||userAgent.contains("Trident")) {//针对IE或IE为内核的浏览器
	fileName=java.net.URLEncoder.encode(fileName,"UTF-8");
	}else {
		fileName=new String(fileName.getBytes("UTF-8"),"ISO-8859-1");//谷歌控制版本
}
headers.setContentDispositionFormData("attachment", fileName);// 默认下载文件名为原始文件名

其他浏览器控制字符格式:(详细)

String userAgent = request.getHeader("User-Agent");//获取浏览器名(IE/Chome/firefox)
if (userAgent.contains("firefox")) {    
      fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器    
    } else if (userAgent.contains("MSIE")) {    
     fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器    
    }else if (userAgent.contains("CHROME")) {    
     fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌    
  }  
headers.setContentDispositionFormData("attachment", fileName);// 默认下载文件名为原始文件名

相关文章教程推荐:java入门教程

以上就是java下载文件中文文件名乱码的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码
  • 相关标签:java 下载 文件 中文 文件名 乱码
  • 本文原创发布php中文网,转载请注明出处,感谢您的尊重!
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • java出现,如果是问题,可以将为“UTF-8”或者“ISO”,如果是浏览器不兼容问题,可以通过“URLEncode”对进行“UTF-8”编或者通过字节转换成
    解决java问题的方法是:1、首先设置上传的处理器的编格式为【utf-8】;2、然后获取浏览器格式,根据不同浏览器控制格式即可。
    java可以在时通过设置解决,在IE浏览器可以使用encode()方法指定编格式。java可以以流的形式,可以使用FileInputStream方法读取
    java解决方法:1、针对IE或者以IE为内核的浏览器使用URLEncoder.encode()方法设置的编格式即可。
    java的解决方法:1、针对IE或者以IE为内核的浏览器使用URLEncoder.encode()方法指定
    java解决方法:根据不同浏览器使用不同的方法对进行编处理。IE和Edge浏览器使用encode()方法处理,其它浏览器使用字节流转方式处理。
    java解决方法:可以通过改变格式来解决,不同的浏览器,解决的方法不太一样。1、IE浏览器通过URLEncoder对filename进行UTF8编
    java解决方法:1、使用URLEncoder.encode()方法对filename进行UTF8编会转换为Unicode编
    java解决方法:1、在IE浏览器使用URLEncoder.encode()方法设置为"UTF-8"。
    java解决方法:1、使用encode()改变的编方式解决。2、使用String的getBytes()方法改变java的编格式来解决
    phpfopen的解决办法:首先对进行编,代为【$fileName = iconv('UTF-8', 'GBK', $fileName)】;然后保存原先的;最后再通过进行创建即可
    java解决方法:1、使用encode(formFileName,"UTF-8")方法改变
    linux的解决方法是:1、首先,安装convmv,【yum install convmv】;2、然后,对进行转,【convmv -f gbk -t utf-8 -r --notest
    java解决方法:1、在IE或以IE为内核的浏览器使用encode()方法对进行转来解决。2、在非IE浏览器转换为字符串,然后对字符串转来解决。
    centos出现的解决方法是:1、执行命令【yum install convmv】安装convmv;2、执行命令【convmv -f gbk -t utf-8 -r --notest /
    centos系统的解决方法是:1、首先,执行wget命令工具;2、然后,执行【rpm -ivh convmv-1.15-1.el6.rf.noarch.rpm】命令安装转工具即可
    java实现zip压缩的解决办法:首先选择ANTant.jar的类,代为【org.apache.tools.zip.ZipEntry】;接着实现对ant.jar依赖即可。
    java导出出现解决方法:在导出语句String((edTemplate.getTemplateName()+"导入模板").getBytes(),"ISO-
    java读取解决方法:在java读取时在InputStreamReader类指定数据流的编方式为“UTF-8”,即可解决java读取时出现的问题。
    php上传的解决方法:在html的head标签间加入相关语句,使编保持统一,代为【<meta http-equiv="Content-Type"content

    专题推荐

    推荐视频教程
  • 极客学院Java视频教程极客学院Java视频教程
  • JAVA 初级入门视频教程JAVA 初级入门视频教程
  • 全面解析Java注解全面解析Java注解
  • 最新Java完整视频教程最新Java完整视频教程
  • 视频教程分类