字符集問題,我有一個上傳zip的功能。在我的項目ZipEntry.getName()
當用戶上傳任何壓縮,我的系統中提取文件並顯示文件夾結構,用戶。
如果zip文件包含的文件具有類似名稱Õ.txt那麼它將璧顯示像O.txt。
ZipFile zipFile = new ZipFile(filePath, Charset.forName("UTF8"));
Enumeration entries = zipFile.entries();
while(entries.hasMoreElements())
{
ZipEntry entry = (ZipEntry)entries.nextElement();
System.out.println(entry.getName());
}
上面是我的代碼來讀取zip條目。
現在,當我試圖讓條目的名稱,它會給我O.txt代替Õ.txt的。
我已經用JDK 7測試了這段代碼,但結果相同。
我也曾嘗試不同的編碼類型等CP437,IBM437,ISO-8859-1和ISO-8859-1,但在結果沒有變化。
這樣的請求建議我可以在從zip文件中獲取條目的時間支持所有的字符
感謝&問候 雅鼎
雅鼎,我估計java的正確讀取該文件的名稱,但如果你看到輸出的控制檯不支持Unicode字符。如果您調試代碼,您是否看到正確的名稱? – Augusto 2012-08-06 12:12:45
嗨 是的,我通過調試器也看到了這件事。 感謝和問候 montu v boda – 2012-08-06 14:17:54
您是否嘗試過使用Cp1252編碼?它適用於ApacheCommons-compress庫,它使用JDK6 http://stackoverflow.com/a/20523390/185565 – Whome 2013-12-11 15:41:25