Code Bye

解决ICSharpCode.SharpZipLib压缩文件时出现中文文件名乱码问题

C#项目使用ICSharpCode.SharpZipLib.dll 解压缩文件时 ,调用SharpZipLib的FastZip压缩一个中文名的文件,生成的.zip .gzip文件不能解压缩,打开提示错误,并且压缩包中出现中文文件名乱码,文件名变成了”????”或”___”。

解决方法一:

下载SharpZipLib 源码。找到“ZipConstants.cs”,修改文件的最后两个方法:
public static string ConvertToString(byte[] data)
{
   return Encoding.GetEncoding(“gb2312”).GetString(data, 0, data.Length);
}

public static byte[] ConvertToArray(string str)
{
    return Encoding.GetEncoding(“gb2312”).GetBytes(str);

}

两个方法都改成这样子,重新生成ICSharpCode.SharpZipLib项目,在项目中重新引用新的ICSharpCode.SharpZipLib.dll就OK了。

解决方法二:

设置Unicode编码。在src文件夹中双击ICSharpCode.SharpZipLib.csproj打开项目。在ZipEntryFactory.cs文件(MakeFileEntry函数),修改

result.IsUnicodeText = true;

如图:

 

然后重新编译,引用。

 

 


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明解决ICSharpCode.SharpZipLib压缩文件时出现中文文件名乱码问题