1. 程式人生 > 其它 >解決ServletFileUpload上傳檔案時,獲取上傳檔名出現中文亂碼問題

解決ServletFileUpload上傳檔案時,獲取上傳檔名出現中文亂碼問題

技術標籤:亂碼javaservlet

解決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");

即可解決該問題.

重新部署工程之後,便不會出現亂碼問題了.
在這裡插入圖片描述