在網上看了一些解決的方法,試了下沒解決問題。
首先要明白為什么會出現這種問題:FileItem中用的編碼方式是UTF-8,而工程用的編碼方式是GBK。
在Debug的時候看發現傳進來的文件名已經是亂碼了,過來的字節數組轉換成GBK的原因,所以現在要用GBK來讀該串:
fileItem.getName().getBytes("GBK")
讀完之后要把它還原成正確的格式,也就是UTF-8:
new String(fileItem.getName().getBytes("GBK"), "UTF-8")
但是前端頁面要顯示的是GBK編碼,這樣就需要再造出一個String,是GBK格式字符串,第一步當然是先得到GBK對應的byte數組,即:
new String(fileItem.getName().getBytes("GBK"), "UTF-8").getBytes("GBK")
得到數組之后,用該數組造一個GBK格式的字符串就可以了:
value = new String(new String(fileItem.getName().getBytes("GBK"), "UTF-8").getBytes("GBK"), "GBK");