cannot create file怎么解决_go 解压zip乱码问题解决

d1eefd6018387fa8eaa761ae86fbc008.png

场景

winrar压缩的zip包解压后乱码

分析

编码不一致,winrar默认采用本地编码 (国内一般都是gbk)进行压缩 ,而golang字符串编码是utf-8

解决

//zip文件解压
func Unzip(zipFile string, destDir string) error {
    
	zipReader, err := zip.OpenReader(zipFile)
	if err != nil {
    
		return err
	}
	defer zipReader.Close()
	var decodeName string
	for _, f := range zipReader.File {
    
		if f.Flags == 0 {
    
			//如果标致位是0  则是默认的本地编码   默认为gbk
			i := bytes.NewReader([]byte(f.Name))
			decoder := transform.NewReader(i, simplifiedchinese.GB18030.NewDecoder())
			content, _ := ioutil.ReadAll(decoder)
			decodeName = string(content)
		} else {
    
			//如果标志为是 1 << 11也就是 2048  则是utf-8编码
			d
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值