相关文章推荐
月球上的眼镜  ·  C# .Net Core ...·  6 天前    · 
逆袭的黄瓜  ·  BUUCTF-[WebLogic]CVE-2 ...·  3 天前    · 
力能扛鼎的咖啡  ·  MDC (The Adobe AEM ...·  2 天前    · 
卖萌的水桶  ·  使用 XML Web 服務進行 XML ...·  10 小时前    · 
冲动的香槟  ·  async ...·  2 年前    · 

项目中使用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 directory if (!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; 2得到 zip 文件对象之后。while((num= zip .read(byte_s,0,byte_s.length))>-1){//通过read 方法 来读取文件内容。原文链接https//blog.csdn .net /yumolan4325/article/details/79019580。如String zip FileName="C/Users/xucla/Desktop/CO60. zip ";如String zip FileName="C/Users/xucla/Desktop/CO60. zip ";... void putNextEntry( Zip Entry e) 开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处。 Zip Entry(String name) //test/mm.jpg /test/a.t... string filePath = @"D:\Program Files\1.rar";//绝对路径 //解压目录 string virtualPath = string.Format("{0}/{1}", "Decompress", DateTime.Now.ToString("yyyyMMdd")); string F...