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

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

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

cs 复制代码
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;
}
相关推荐
咕白m6252 小时前
通过 C# 高效提取 PDF 文本的完整指南
后端·c#
hqwest5 小时前
C#WPF实战出真汁08--【消费开单】--餐桌面板展示
c#·wpf·ui设计·wpf界面设计
orangapple5 小时前
WPF 打印报告图片大小的自适应(含完整示例与详解)
c#·wpf
追逐时光者16 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 50 期(2025年8.11-8.17)
后端·.net
★YUI★20 小时前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
谷宇.21 小时前
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
游戏·unity·c#·游戏程序·unity3d·游戏开发·游戏编程
LZQqqqqo21 小时前
C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
windows·c#·list
Dm_dotnet1 天前
Stylet启动机制详解:从Bootstrap到View显示
c#
三千道应用题1 天前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
唐青枫1 天前
别滥用 Task.Run:C# 异步并发实操指南
c#·.net