unity 正确解压中文Zip文件

在Unity使用ICSharpCode.SharpZipLib.dll解压包含中文的Zip文件时,常遇到中文乱码的问题。通过设置ZipConstants.DefaultCodePage属性,可以解决解压过程中的乱码和额外字节问题,确保正确解压且文件可用。提供了解压代码示例及配套DLL的下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Unity中对含有中文的Zip压缩文件解压真的是挺坑的一件事情。普通C#工程,只要目标框架在.NET Framework 4.5(含)以上版本,只要一行代码就能搞定的事:

ZipFile.ExtractToDirectory("zip目录", "解压目录");

unity老旧的3.5让它变得难搞,因为没了c#自带解压zip功能,只好转而求助第三方库,ICSharpCode.SharpZipLib.dll就是个用来解压zip文件的库,但是你用了就会发现一般的用法确实能够解压,但是中文部分全都乱码了。解决这个问题,网上有很多改法,但是我试了好多,有些直接就不管用,有些没说使用的dll版本号,下载下来后发现压根就没有要修改的相关属性,还有些改法,用是能用,能解压出来,也不乱码了,但是每个中文文件结果都莫名的加了好多无用的字节,导致还是不能使用,好烦。

话不多少,我直接贴上代码和dll下载地址,能正常解压,不乱码,也没结尾多加无用字节。

        public abstract class UnzipCallback
        {
            /// <summary>
            /// 解压单个文件或文件夹前执行的回调
            /// </summary>
            /// <param name="_entry"></param>
            /// <returns>如果返回true,则压缩文件或文件夹,反之则不压缩文件或文件夹</returns>
            public virtual bool OnPreUnzip(ZipEntry _entry)
            {
                return true;
            }

            /// <summary>
            /// 解压单个文件或文件夹后执行的回调
            /// </summary>
            /// <param name="_entry"></param>
            public virtual void OnPostUnzip(ZipEntry _entry) { }

            /// <summary>
            /// 解压执行完毕后的回调
            /// </summary>
            /// <param name="_result">true表示解压成功,false表示解压失败</param>
            public virtual void OnFinished(bool _result) { }
        }

        /// 解压Zip包
        /// </summary>
        /// <param name="_file
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值