2011-06-30 30 views
2

我有一個Tomcat(7)服務器上運行,通過它我嘗試通過HTTP訪問某些公開的文件。一些在文件系統中的文件中都有特殊字符。沒有那些特殊字符的人被發現。其他的人給予404例如:UTF-8網址問題

http://localhost:9090/processed/transcoded/Csángó_TÖMEGKERESZTELŐVEL_EGYBEKÖTÖTT_búcsú_Istensegítsfalvá20111053491309424029417_extracted.mp3"

從我發現了UTF-8的URL不應該是一個問題,我已經嘗試過上一個網址逃生功能。文件名,這導致:?

http://localhost:9090/processed/transcoded/Cs%c3%a1ng%c3%b3_T%c3%96MEGKERESZTEL%c5%90VEL_EGYBEK%c3%96T%c3%96TT_b%c3%bacs%c3%ba_Istenseg%c3%adtsfalv%c3%a120111053491309424029417_extracted%2emp3

...但是,這似乎並沒有解決任何事情要嘗試下一個我不知道問題是什麼,是它可能與一個。 Tomcat的設置?

回答

6

你有你的<ConnectorURIEncoding="UTF-8"?如果是的話,這裏就是我會做:

  1. 創建具有過濾器攔截所有來電/processed/transcoded/*
  2. 發生在那個過濾斷點測試web應用程序,看看你會得到什麼。解碼時文件名是否有意義?
  3. 嘗試使用此路徑打開一個新的java.io.File(顯然在前面加上本地位置,例如/home/someuser/files/...並假設文件是​​存在的)。

我不認爲tomcat的會比我們上面列出更多。

另一種方法是調試Tomcat本身。

+1

是原來如此!我發現了另一個職位上在這裏:http://stackoverflow.com/questions/138948/how-to-get-utf-8-working-in-java-webapps –