最近用.net core做开发的时候,遇到了解压压缩文件时出现乱码的问题
其实究其原因就是编码不正确,当我要使用GB2312
编码时发现.net core 中默认没有该编码,最后百度发现可以引用nuget包来实现
参考:.NET CORE中Encoding对GB2312等编码的支持
回头再来说说解压缩的问题,我用的是SharpZipLib
来进行压缩解压的,使用的版本为1.32
nuget链接SharpZipLib
解决方法也很简单
- 引入nuget 包
System.Text.Encoding.CodePages
在启动的时候,注册EncodingProvider,执行代码如下
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
解压缩时使用
GB2312
编码进行解压缩就可以了,参考代码ZipStrings.CodePage = Encoding.GetEncoding("GB2312").CodePage; using ZipInputStream s = new(File.OpenRead(sourceFile)); ZipEntry theEntry; while ((theEntry = s.GetNextEntry()) != null) { //do somthing }
另外使用
System.IO.Compression.ZipFile
压缩解压的处理方法也差不多,参考代码var zipPath = @"C:\temp\test.zip"; ZipFile.ExtractToDirectory(zipPath, @"C:\temp", Encoding.GetEncoding("GB2312"));
最后,关于类似编码的问题基本可以通过这种方式解决