2012-12-10 55 views
0

我在java中使用java.util.zip包提取了一個簡單的提取方法。對不同語言的zip文件進行壓縮提取

編輯:作爲說明,我需要在java 1.5中運行代碼,因爲它必須在oracle數據庫中作爲java存儲過程運行。

它已經運行了很長一段時間,但最近我遇到了一個錯誤,當我試圖提取一個壓縮文件,其中包含西班牙特殊字符的名稱和文件內有西班牙特殊字符。

代碼在

ZipEntry entry = zis.getNextEntry(); 

失敗,這是由於特殊的字符?我已驗證該zip不會損壞,並已在名稱中包含特殊字符的其他拉鍊上進行過測試,並且已驗證它會導致相同的錯誤。

最後,如果是這樣的話,有沒有解決這個問題的方法?

+2

你有一個堆棧跟蹤? – Kai

回答

0

我發現org.apache.commons有一個壓縮類,並有一堆不同的選項。它允許您指定一個編碼參數,以便它現在可以接受來自不同語言的字符。

3

在Java 7中,您可以使用指示字符編碼的ZipFile(File, Charset)

+0

關於哪個Charset Cp1252(Windows),Cp850(DOS)可能首先被嘗試。 –

+0

我需要使用java 1.5,因爲它是作爲java數據庫中的java存儲過程運行的 – medium

+0

也許 - 如果您非常幸運 - 您可以嘗試捕獲getNextEntry,創建文件名並繼續。或者通過設置全局文件編碼進行非常黑客攻擊。更好地報告失敗,然後在網絡應用程序中執行。 –

相關問題