茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1728673 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00035.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

爪哇咖啡屋 : [教學]Java Servlet檔案上傳方案

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[教學]Commons FileUpload不能上傳中文檔名?
大家在使用Commons FileUpload的時候,應該不少人會碰到中文檔名上傳變成亂碼的問題吧!?
這很明顯得又是Java編碼、Client編碼、Server環境編碼中間轉換的問題!
不能否認,Java上這類的問題還真的蠻多低,這裡來跟大家說一下怎麼解決!

首先,必須先跟大家說明的是,如果request.getCharacterEncoding沒有設定(也就是request.getCharacterEncoding() == null)的話,系統會用Server編碼來處理。
而我們一般來說不會用這樣的編碼來做前端,此時上傳的檔案名稱一定就會變成亂碼。

所以如果要上傳檔案可以使用中文檔名的話,有以下幾種方案:
1.讓你的Server環境和你開發出來的編碼相同!
也就是說,如果你都是使用UTF-8編碼開發的話,就讓你的系統環境也是UTF-8吧!
(謎:不過MS系統好像沒辦法設定底層編碼喔!? 打小人
2.看你的Server系統是啥編碼,改用那個編碼開發!
MS的系統底層一般來說是MS950,也就是說你所有開發都採行MS950編碼,也就可以了!
(謎:MS950可以多語系嗎?怎麼有種自廢武功的感覺 怒火中燒
3.把getCharacterEncoding搞定就好啦!
如果上述兩個方法都不行(這不是行不行的問題吧!?是好不好的問題吧!? XD )的話,那我們就讓FileUpload的CharacterEncoding正確不就好了嗎!?
只要在接收上傳檔案的頁面上加上
<% request.setCharacterEncoding("UTF-8"); %>
這樣就搞定了!
(謎:冷日只要是Java開發的東西,都一定採UTF-8編碼,這不正是Java的本意嗎!? 推眼鏡

希望這樣可以幫上大家解決中文檔名上傳的問題。
PS:這裡有參考文件Createor2檔案上傳元件-上傳中文檔名解法
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|