本文摘自php中文网,作者爱喝马黛茶的安东尼,侵删。
问题
go语言自带的zip包可以解压zip文件。然而,如果你用winrar压缩成zip后。再用go去解压会发现文件名称是乱码。而当你使用一众国产压缩软件压缩后再解压却不是乱码。
原因
winrar压缩时,默认采用本地编码方式来进行压缩。在中国,本地编码方式一般是GBK。而我们知道go语言字符串都是utf-8格式的,所以有可能出现乱码的情况。
解决方案
判定文件名编码方式,如果为GBK,则转换GBK=》utf-8
由上面图片我们知道如果flags字段11bit位为1则是utf-8编码,0为本地编码。
代码
代码中要用到如下两个包:
"golang.org/x/text/encoding/simplifiedchinese"
相关阅读 >>
更多相关阅读请进入《golang》频道 >>
Go语言101
一个与时俱进的Go编程知识库。