C# 名称包含丹麦字母的SharpZipLib文件:丹麦字母存储不正确
我需要将文件存储在zip存档中。这些文件的文件名中可能包含丹麦语(和其他unicode)字符。我基于SharpZipLib使用此代码:C# 名称包含丹麦字母的SharpZipLib文件:丹麦字母存储不正确,c#,zip,sharpziplib,C#,Zip,Sharpziplib,我需要将文件存储在zip存档中。这些文件的文件名中可能包含丹麦语(和其他unicode)字符。我基于SharpZipLib使用此代码: public static void CompressIntoZip(IList<ZipFile> zipFiles, Stream destinationStream, GetFileStreamDelegate getFileStreamDelegate) { ZipConstants.DefaultCodePag
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();
}
public static void compressiontozip(IList zipFiles、Stream destinationStream、GetFileStreamDelegate GetFileStreamDelegate)
{
ZipConstants.DefaultCodePage=65001;
//ZipConstants.DefaultCodePage=1252;
var zipOutputStream=新的zipOutputStream(destinationStream);
zipOutputStream.SetLevel(1);
foreach(ZipFile ZipFile中的ZipFile)
{
var zipEntry=新的zipEntry(zipFile.FileName)
{
大小=zipFile.Size,
偏移量=0,
DateTime=zipFile.DateTime
};
zipOutputStream.PutNextEntry(Zippentry);
使用(Stream source=getFileStreamDelegate(zipFile.FileId))
{
CopyStream(源,ZipoutStream);
zipOutputStream.Flush();
destinationStream.Flush();
}
}
zipOutputStream.Finish();
}
除了在文件名中使用丹麦字符时没有正确存储在zip文件中之外,所有这些都可以正常工作。例如Påsporet变成Påsporet
我尝试过各种ZipConstants.DefaultCodePage,但迄今为止运气不佳
你知道怎么解决这个问题吗
短暂性脑缺血发作
瑟伦(Søren)您还没有隔离出问题,这对于任何正在读取.zip归档文件的程序来说都很容易成为问题。既然大家都知道这对SharpZipLib很有效,这就是可能的解释。我明白你的意思。我已经用Windows内置zip功能和7z进行了测试。结果如两个解决方案中所述设置DefaultCodePage=850修复了此问题