您是否知道一些Java庫/路徑,以便在適當的Windows國家代碼頁(例如cp1250)中生成帶有文件名的tar檔案。在Java中使用全國性字符創建tar檔案
我試圖與Java tar,示例代碼:
final TarEntry entry = new TarEntry(files[i]);
String filename = files[i].getPath().replaceAll(baseDir, "");
entry.setName(new String(filename.getBytes(), "Cp1250"));
out.putNextEntry(entry);
...
它不工作。在Windows中提取焦油的地方,國家字符被破壞。 我還發現了一個奇怪的東西,在Linux下波蘭語字符顯示正確,只有當我用ISO-8859-1:
entry.setName(new String(filename.getBytes(), "ISO-8859-1"));
儘管適當波蘭代碼頁ISO-8859-2,其中不起作用。 我也試過Windows的Cp852,沒有效果。
我知道tar格式的限制,但改變它不是一個選項。
感謝您的建議,
非常感謝!有用。 在Windows中解包後的國家字符都可以。 我必須看看構造''新字符串(filename.getBytes(「Cp1250」),「ISO-8859-1」)''並正確理解它。 – pawelsto 2009-09-30 08:37:55
你必須閱讀TAR代碼才能看到它的工作原理。 TAREntry不理解編碼。它只是將UTF-16字符的低位字節複製到TAR文件。在Unicode中,低位字節完全映射到Latin-1,所以我們使用Latin-1來保存字節數組。它完全與拉丁-1編碼無關。 – 2009-09-30 12:22:02