在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 virtua