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

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_2426194.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2010/8/1 8:40:30
大家在使用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檔案上傳元件-上傳中文檔名解法
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

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