Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 名称包含丹麦字母的SharpZipLib文件:丹麦字母存储不正确_C#_Zip_Sharpziplib - Fatal编程技术网

C# 名称包含丹麦字母的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

我需要将文件存储在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();
    }
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修复了此问题