解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题
在我们使用ServletFileUpload上传文件时,我们通常会获取其上传的文件名,然而当文件名包含中文时,便可能出现乱码.如:
而这个问题明显属于编码问题,我们出现乱码的代码如下:
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {if(ServletFileUpload.isMultipartContent(request)){//判断是否为多段数据FileItemFactory firlfact = new DiskFileItemFactory();ServletFileUpload sfu = new ServletFileUpload(firlfact);try {List<FileItem> list = sfu.parseRequest(request);for (FileItem fileItem : list) {if(fileItem.isFormField()){System.out.println(fileItem.getName());System.out.println(fileItem.getString("utf-8"));}else {fileItem.write(new File("e:\\"+fileItem.getName()));}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}
我们可以发现,ServletFileUpload使用了request,所以我们只需要在代码开头加上一句:
request.setCharacterEncoding("utf-8");
即可解决该问题.
重新部署工程之后,便不会出现乱码问题了.