解决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");
即可解决该问题.
重新部署工程之后,便不会出现乱码问题了.