commons-fileupload 中文乱码问题

在使用Apache组件commons-fileupload上传下载文件时的几种乱码情况。

1.上传文件时后台获取文件名文本域乱码问题

通过item.isFormFied()判断upload.parseRequest(req)返回List<FileItem>中那些为文本域反之为文件

获取文件名:(FileItem) item.getName()

 1) (ServletFileUpload)upload.setHeaderEncoding("UTF-8");

 2) 在upload.parseRequest(req); 之前将(HttpServletRequest)req.setCharacterEncoding("UTF-8");

获取文本:(FileItem) item.getString()

  1)(FileItem) item.getString("UTF-8");

2.下载文件时文件名乱码问题

resp.setContentType("application/x-msdownload");
// setHeader()详细:https://www.cnblogs.com/mingforyou/p/3281945.html
resp.setHeader("Content-Disposition", "attachment;filename=" + 

URLEncoder.encode(filename,"UTF-8"));

URLEncoder.encode() url转码,URLEncoder.decode()解码 
String strTest = "?=abc?中%1&2<3,4>";
strTest = URLEncoder.encode(strTest, "UTF-8");
System.out.println(strTest);%3F%3Dabc%3F%E4%B8%AD%251%262%3C3%2C4%3E
strTest = URLDecoder.decode(strTest,"UTF-8");
System.out.println(strTest);?=abc?中%1&2<3,4>

猜你喜欢

转载自blog.csdn.net/lin1094201572/article/details/79777563
今日推荐