我的任务是从 zip 存档中提取文件。不幸的是,正如我从另一个问题中发现的那样,win10 中的 Windows 资源管理器仍然使用 cp866 对存档文件中的文件名进行编码。.NET Core 不支持此代码页,因此提取存档会导致符号不可读。Aspose.Zip 让我遇到了完全相同的问题。有没有办法在 .net core 3.1 堆栈中解决这个问题?也许在.net 5中?
问问题
23 次
1 回答
0
默认情况下,.NET Core 3.1 和 .NET 5+ 都包含有限的开箱即用编码集。但是,您可以通过仅对代码行来解决此问题:您只需要注册一个自定义编码提供程序(请参阅https://docs.microsoft.com/en-us/dotnet/api/system.text.codepagesencodingprovider?view= net-5.0)和瞧 - 通过其编号获得所需的编码:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var encoding = Encoding.GetEncoding(866);
然后,您可以轻松地从 zip 中提取文件,存档在 Win Explorer 中,而不会出现非 ascii 符号问题。
于 2021-05-27T07:12:35.330 回答