我需要将文件存储在zip存档中。这些文件可能在文件名中包含丹麦语(和其他unicode)字符。我使用此代码基于 SharpZipLib :
public static void CompressIntoZip(IList<ZipFile> zipFiles, Stream destinationStream, GetFileStreamDelegate getFileStreamDelegate)
{
ZipConstants.DefaultCodePage = 65001;
//ZipConstants.DefaultCodePage = 1252;
var zipOutputStream = new ZipOutputStream(destinationStream);
zipOutputStream.SetLevel(1);
foreach (ZipFile zipFile in zipFiles)
{
var zipEntry = new ZipEntry(zipFile.FileName)
{
Size = zipFile.Size,
Offset = 0,
DateTime = zipFile.DateTime
};
zipOutputStream.PutNextEntry(zipEntry);
using(Stream source = getFileStreamDelegate(zipFile.FileId))
{
CopyStream(source, zipOutputStream);
zipOutputStream.Flush();
destinationStream.Flush();
}
}
zipOutputStream.Finish();
}
一切正常,但在文件名中使用时,丹麦语字符未正确存储在zip文件中。例如Påsporet变为 P?sporet
我尝试了各种 ZipConstants.DefaultCodePage ,但到目前为止还没有运气。
你知道如何解决这个问题吗?
TIA Søren