解决上传文件时服务端中文文件名乱码问题
2014-02-08 14:28
776 查看
form 表单 post 上传文件时服务端获取的中文文件名乱码,调试发现 request.getCharacterEncoding() 为 null。可是页面中我已经设置了文档编码了呀:
对文件名做了如下转码就得到原文件名了:
调试发现 spring mvc 内部如果 request.getCharacterEncoding() 为 null 就默认为 ISO-8859-1。
但为什么请求编码为空呢?google了哈,网络上有人说IE不会将页面上指定的编码写入http header发送给客户端,而我用的是chrome。
不管了,先求证哈此种说法,编写一个filter显式设置请求编码:
<!-- html 4 的编码设置方式 --> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!-- html 5 的编码设置方式 --> <meta charset="UTF-8">
对文件名做了如下转码就得到原文件名了:
new String(multipartFile.getOriginalFilename().getBytes("ISO-8859-1"), "UTF-8");
调试发现 spring mvc 内部如果 request.getCharacterEncoding() 为 null 就默认为 ISO-8859-1。
但为什么请求编码为空呢?google了哈,网络上有人说IE不会将页面上指定的编码写入http header发送给客户端,而我用的是chrome。
不管了,先求证哈此种说法,编写一个filter显式设置请求编码:
public class SetCharacterEncodingFilter implements Filter { ... @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { if (request.getCharacterEncoding() == null) { request.setCharacterEncoding("UTF-8"); } filterChain.doFilter(request, response); } ... }再次测试,哦了,无需转码即可获取原本的中文文件名。
相关文章推荐
- 解决上传文件时服务端中文文件名乱码问题
- 解决COS、FileUpload上传文件时中文文件名乱码问题
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- PHP文件上传并解决中文文件名乱码问题
- 解决httpclient上传文件的时候中文文件名乱码的问题
- 解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题
- HttpClient 4.3.* 上传带中文文件名文件文件名乱码问题的解决
- SpringCloud 上传文件,经过Zuul,中文文件名乱码解决办法
- php上传文件中文文件名乱码的解决方法
- php上传中文文件文件名乱码问题
- 解压文件源码(需要引入ant.jar包,解决zip文件名为中文出现乱码问题)
- 解决python中用zipfile解压缩文件时中文文件名乱码的问题
- 使用edtftpnet上传文件到Serv-U出现乱码的问题,并且不能创建中文文件名或文件夹。
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- jsp实现文件下载与中文文件名乱码问题解决
- FCKeditor for Java 中文文件名文件上传乱码问题
- SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法
- 解决Java下载文件,文件名包含中文在IE浏览器乱码问题
- Java Web中使用JSPSmartUpload控件实现文件的上传和下载(解决了中文乱码问题)(JSP页面采用GBK编码)