gpt4 book ai didi

java - 在 Java 中创建带有国家字符的 tar 存档

转载 作者:行者123 更新时间:2023-11-30 12:00:49 24 4
gpt4 key购买 nike

您是否知道 Java 中的一些库/方式来生成带有正确 Windows 国家代码页(例如 cp1250)文件名的 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 中提取 tar 时,国家字符被破坏了。我还发现了一个奇怪的事情,在 Linux 下波兰语国家字符只有在我使用 ISO-8859-1 时才能正确显示:

entry.setName( new String( filename.getBytes(), "ISO-8859-1" ) );

尽管正确的波兰语代码页是 ISO-8859-2,但它也不起作用。我也尝试过 Cp852 for windows,没有效果。

我知道 tar 格式的局限性,但无法更改它。

谢谢你的建议,

最佳答案

正式地,TAR 不支持 header 中的非 ASCII。但是,我能够在 Linux 上使用 UTF-8 编码的文件名。

你应该试试这个,

String filename = files[i].getName();
byte[] bytes = filename.getBytes("Cp1250")
entry.setName(new String(bytes, "ISO-8859-1"));
out.putNextEntry( entry );

这至少保留了 TAR header 中 Cp1250 中的字节。

关于java - 在 Java 中创建带有国家字符的 tar 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1491725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com