C#项目使用ICSharpCode.SharpZipLib.dll 解压缩文件时 ,调用SharpZipLib的FastZip压缩一个中文名的文件,生成的.zip .gzip文件不能解压缩,打开提示错误,并且压缩包中出现中文文件名乱码,文件名变成了”????”或”___”。
解决方法一:
下载SharpZipLib 源码。找到“ZipConstants.cs”,修改文件的最后两个方法:
public static string ConvertToString(byte[] data)
{
public static byte[] ConvertToArray(string str)
{
两个方法都改成这样子,重新生成ICSharpCode.SharpZipLib项目,在项目中重新引用新的ICSharpCode.SharpZipLib.dll就OK了。
解决方法二:
设置Unicode编码。在src文件夹中双击ICSharpCode.SharpZipLib.csproj打开项目。在ZipEntryFactory.cs文件(MakeFileEntry函数),修改
result.IsUnicodeText = true;
然后重新编译,引用。