gpt4 book ai didi

c# - 如何获得正确的 ZipArchive.CreateEntry 名称编码?

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:55 28 4
gpt4 key购买 nike

我使用以下代码通过 C# 创建一个 zip 存档。

using (var zipArchive = new ZipArchive(compressedFileStream, ZipArchiveMode.Create, false))
{
var zipEntry = zipArchive.CreateEntry(name + ".pdf");
...
}

名称通常由瑞典语字符组成,例如 ÅÄÖ åäö。当我打开 zip 并查看名称时,瑞典字符像这样乱码“Fl+Âdesm+ñtare.pdf”。

我尝试用这段代码修复名称编码。但它没有用。

var iso = Encoding.GetEncoding("ISO-8859-1");
var utf8 = Encoding.UTF8;
var utfBytes = utf8.GetBytes(name);
var isoBytes = Encoding.Convert(utf8, iso, utfBytes);
var isoName = iso.GetString(isoBytes);

有什么想法吗?

最佳答案

由于 DotNetZip 是一个死项目并且这篇文章与谷歌搜索相关,这里是一个使用 IO.Compression 库的替代解决方案:

Archive = New IO.Compression.ZipArchive(Stream, ZipArchiveMode, LeaveOpen, Text.Encoding.GetEncoding(Globalization.CultureInfo.CurrentCulture.TextInfo.OEMCodePage))

这可能不会涵盖所有转换,根据我从有关该主题的资源中收集到的信息,底层代码使用本地机器(服务器)区域文化的编码页面作为条目名称。使用该编码显式映射它们已经解决了我的客户端域的问题,但不能保证它是 Elixir 。

关于c# - 如何获得正确的 ZipArchive.CreateEntry 名称编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478958/

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