前段时间项目需要,搞了下zip的解压缩问题,也是利用ICSharpCode.SharpZipLib.dll来处理的zip,这里说下之前遇到的坑(这里提供我用的这个库ICSharpCode.SharpZipLib.dll    ;http://note.youdao.com/noteshare?id=ce22c848c004c3be99c67ecb24f991fd&sub=E60263C2B3B54CEEBA584A23AACC8069)

  一个简单调用:

    /// <summary>
/// 压缩Zip
/// </summary>
/// <param name="fileNames"></param>
/// <param name="outputFilePath"></param>
/// <param name="compressLevel">压缩等级</param>
public static void ZipFile(string[] fileNames, string outPath, int compressLevel)
{
try
{
using (ZipOutputStream stream = new ZipOutputStream(File.Create(outPath)))
{
stream.SetLevel(compressLevel);
byte[] buffer = new byte[];
foreach (string file in fileNames)
{
var entry = new ZipEntry(Path.GetFileName(file))
{
DateTime = DateTime.Now
};
stream.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, , buffer.Length);
stream.Write(buffer, , sourceBytes); } while (sourceBytes > );
}
}
stream.Finish();
stream.Close();
Debug.Log("完成压缩");
}
} catch (Exception e) {
Debug.Log ("压缩出错:" + e);
} }
/// <summary>
/// 解压
/// </summary>
/// <param name="zipPath">压缩文件路径</param>
/// <param name="outPath">解压出去路径</param>
public static void UnZipFile(string zipPath, string outPath)
{
if (File.Exists(zipPath))
{
using (ZipInputStream stream = new ZipInputStream(File.OpenRead(zipPath)))
{
ZipEntry theEntry;
while ((theEntry = stream.GetNextEntry()) != null)
{
string fileName = Path.GetFileName(theEntry.Name);
string filePath = Path.Combine(outPath, theEntry.Name);
string directoryName = Path.GetDirectoryName(filePath); if (directoryName.Length > )
Directory.CreateDirectory(directoryName);
if (fileName != String.Empty)
{
using (FileStream streamWriter = File.Create(filePath))
{
int size = ;
byte[] data = new byte[];
while (true)
{
size = stream.Read(data, , data.Length);
if (size > )
streamWriter.Write(data, , size);
else
break;
}
}
}
}
Debug.Log("解压完成");
}
}
else
{
Debug.LogError("没找到该文件 : " + zipPath);
}
}

也可以参考这位大佬的 https://www.jianshu.com/p/acc3d79d93f7

这种在untiy编辑器下处理的文件,对路径很敏感,不允许有任何中文,包括解压zip时包里面的压缩文件名也不允许有中文,不然就会出现乱码,虽然不能用中文,但也无关紧要了,毕竟路径不用中文就好了嘛  O(∩_∩)O哈哈~

然而,这还不是重点,因为我们的项目始终都是要发布的,不可永远停留在编辑器下,发布出来之后,运行我们的程序无论如何执行这解压缩的方法都是没反映,程序也没崩,打开我们的日志看一下,发现有条报错 ystem.NotSupportedException: CodePage 437 not supported 代码包不支持

后来查了很多资料测试很久才解决......

1.打开unity PlayerSettings,把里面的Scripting Runtime Version 改为 .net4.6,然后重新发布

2.发布完成后,在unity的安装目录下\Editor\Data\Mono\lib\mono\unity,找到   I18N.dll 和 I18N.CJK.dll  两个文件,把他们俩拷贝到发布包   **_Data/Managed目录下。(之前因为发布后读取中文乱码的问题,也是把这两兄弟copy进取就解决的)

这两步完成就可以了,而且在unity编辑器下中文路径乱码的问题也解决了,可以使用中文路径

unity解压缩zip发布后的一些问题的更多相关文章

  1. Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

    Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip ...

  2. Python 解压缩Zip和Rar文件到指定目录

    #__author__ = 'Joker'# -*- coding:utf-8 -*-import urllibimport osimport os.pathimport zipfilefrom zi ...

  3. asp.net(C#)网站发布后 Global.asax 里 Application_Error 不执行的问题

    现象 在 Global.asax 用 Application_Error 捕捉了http的404,500等错误,在本机测试正常,发布后无效,几经周折终于解决了... 程序是这样设计的 Applicat ...

  4. 微信支付 发布后显示 System:access_denied

    微信支付发布后显示 System:access_denied (android)或 System:not_allow(IOS) 我们项目用的是.NET MVC3 授权目录是:http://mynetd ...

  5. dedecms 后台发布后的文章不能编辑出现一片空白的解决办法

    dede后台无法写新文章也无法编辑以前的文档,文章编辑的地方无法写入,出现无法显示该页面的问题,这是怎么回事?我的dede在ftp中换过文件夹,是不是跟这个有关?该如何解决这个问题? 以下修改是针对d ...

  6. Ueditor 编译发布后无法使用上传图片、附件等功能

    Ueditor 发布后上传到服务器会出现无法使用上传功能,在本地源代码模式下上传功能正常,这是因为在网站发布期间把 net/Uploader.cs 给编译了,发布后的代码不包含Uploader.cs故 ...

  7. 解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后丢失的问题

    ASP.NET MVC4,ASP.NET MVC5中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: <link href="@Url.Content(" ...

  8. α发布后的感想(组长作业)

    今天α发布后,组长作业,谈谈心得体会,谈谈哪些做的好的地方,哪些做的不好.耐撕团队组长因有事缺席,耐撕团队的α发布由齐同学来主持,所以这个作业由齐同学代理. 先谈谈耐撕团队在α发布会中齐同学认为做的好 ...

  9. java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

    将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...

随机推荐

  1. ipv4网络无访问权限

    昨天折腾了一天这个网络受限问题,都没有得到解决,驱动精灵.电脑管家(我不用360).重置Winsock目录.网络重置.组策略控制台.重启路由器(学校的以太网,工作时间不好重置路由器)都用了个遍,一直都 ...

  2. win10 1803版本unable to start ssh-agent service, error :1058

    PowerShell安装了pshazz或者posh-git,但是打开的时候提示 unable to start ssh-agent service, error :1058 1803的设置上面可以看到 ...

  3. Autowired(required=true)

    问题原因 没有实现类的接口上添加了@Autowired注解 问题解决 删掉@Autowired注解 bug详情 Description: Field userDAO in com.crab.servi ...

  4. python链接mysql获得某列最大值

    import pymysqlconn = pymysql.connect(host='10.1.2.198', port= 3306 ,user='root',passwd='123456',db=' ...

  5. ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局

    重磅消息, ActiveReports V13 正式发布!本次更新 ActiveReports 将给您带来全新的报表设计体验:提供在线报表设计器.提供响应式布局和屏幕尺寸自适应能力.提供全新的图表…… ...

  6. Kindeditor富文本实现textarea文本域的上传及单独button 按钮绑定(用来实现单文件上传)

    在最近项目要新增一个内容文章,文章包含一般的正文内容,其中正文中可以包含多张图片.文章最多包含一个音频文件.文章正文的上传功能我是通过textarea文本域绑定kindeditor编辑器实现的,而单独 ...

  7. Request method 'PUT'/ 'POST' not supported

    起因 在项目中遇到需要进行crud操作的功能,用的是Springboot+MybatisPlus+MySQL+AVue,在通过postman测试接口正确性时遇到此错误. 排查过程 因为项目运行是没问题 ...

  8. Visual Studio提示“无法启动IIS Express Web服务器”的解决方法 调试闪退

    有时,在使用Visual Studio运行ASP.NET项目时,会提示“无法启动IIS Express Web服务器”,无法运行,如图: 这一般出现在重装系统之后,或者项目是从别的电脑上复制过来的.解 ...

  9. pytest-xdist分布式执行测试用例

    前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟.如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候,我们会用测试人力成本换取时间成本,这个时候多找个 ...

  10. tail -f 报错 file truncated

    操作: 循环覆盖向tmp 文件写入坐标 tmp: -45.6976089525,-26.1528715421,-0.0188627654187 报错如下: -15.2517398838,-5.1216 ...