您的位置:首页 > 汽车 > 新车 > C# .Net Core Zip压缩包中文名乱码的解决方法

C# .Net Core Zip压缩包中文名乱码的解决方法

2024/9/8 12:22:03 来源:https://blog.csdn.net/gfei2006/article/details/140301167  浏览:    关键词:C# .Net Core Zip压缩包中文名乱码的解决方法

项目中使用ICSharpCode.SharpZipLib.Zip库进行解压,之前自动更新程序是.NET 4.5的,升级到.NET 8后,发现解压升级包里面的中文文件名是乱码了,经过一番摸索,增加一句代码可以解决乱码问题:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

public static bool DeCompressionZip(string _depositPath, string _floderPath)
{if (!Directory.Exists(_floderPath)){Directory.CreateDirectory(_floderPath);}Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);// 解决文件名中文乱码using (ZipInputStream s = new ZipInputStream(File.OpenRead(_depositPath))){ZipEntry ze;while ((ze = s.GetNextEntry()) != null) //如果解压完ze则是null{if (ze.IsFile)//压缩zipINputStream里面存的都是文件。带文件夹的文件名字是文件夹\\文件名   {   string zeName = ze.Name;string directoryName = Path.GetDirectoryName(zeName);// create directoryif (!string.IsNullOrEmpty(directoryName) && directoryName.Length > 0){directoryName = Path.Combine(_floderPath, directoryName);if (!Directory.Exists(directoryName)){Directory.CreateDirectory(directoryName);}}string fileName = Path.GetFileName(zeName);if (!string.IsNullOrEmpty(fileName)){using (FileStream streamWriter = File.OpenWrite(Path.Combine(_floderPath, zeName))){int size = 2048;byte[] data = new byte[2048];while (true){size = s.Read(data, 0, data.Length);if (size <= 0){break;}streamWriter.Write(data, 0, size);}}}}}}return true;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com