|
上个月帮朋友修电脑,开乱她下载了一个压缩包,开乱双击,开乱弹出的开乱窗口里全是“锟斤拷锟斤拷”和“乱码烫烫烫”。她当时就炸了:“这文件是开乱不是坏了?”我看了眼文件名——`资料_最终版.zip`,心里大概有数了。开乱 这事十有八九不是开乱文件坏了,是开乱编码在捣鬼。ZIP本身不存文字,开乱它只负责打包字节流。开乱但压缩包里的开乱文件名,是开乱另外编码的。Windows默认用GBK(简体中文),开乱macOS和Linux多半用UTF-8。开乱你用Windows压一个叫“工作报告”的开乱文件夹,传到Mac上解压,Mac按UTF-8去解码GBK的字节,出来的就是“宸ュ浣鎶ュ憡”这种鬼东西。反过来也一样,Mac压的包在Windows上解压,你会看到一堆“锟斤拷”——那是UTF-8的字节被GBK硬解读后产生的经典乱码。 但注意,我说的是“文件名乱码”,不是文件内容乱码。如果你解压成功后,打开里面的Word或PDF,内容还是乱,那就完全是另一回事了——大概率是压缩时用了某种加密或特殊算法,或者文件本身在传输中就损坏了。前者还能救,后者基本没戏。 怎么救?分两步。第一步,别急着解压。先右键压缩包,选“打开方式”,用Windows自带的资源管理器直接浏览(别用第三方工具)。如果资源管理器里文件名正常,说明只是第三方解压软件的编码识别错了——换个软件就行,比如Bandizip或7-Zip,它们有自动检测编码的选项。第二步,如果资源管理器里也乱,那就得手动改。用7-Zip打开压缩包,找到乱码的那个文件,右键“重命名”,把乱码字符删掉,重新输入正确的中文名,再拖出来解压。这方法笨,但管用。 还有个更隐蔽的坑。有些压缩包是跨平台压的,比如在Windows上压了个文件夹,里面套着子文件夹,文件名是中文,但压缩工具用了“兼容模式”,把文件名存成了UTF-8的变体。这时候你就算在Windows上解压,也可能乱。解决办法是:用命令行。在Windows的PowerShell里输入`tar -xf 文件名.zip`,tar在Windows 10 1803以后自带,它对编码的处理比图形界面工具更“老实”,有时候反而能避开乱码。我试过一次,还真解出来了。 说到底,ZIP的编码问题是个历史遗留烂摊子。ZIP格式1989年定下来,那时候没人考虑中文,也没人想到全球用户会用不同编码存文件名。后来虽然加了UTF-8标志位,但很多老工具根本不写这个标志,导致解压软件只能靠猜。猜对了谢天谢地,猜错了就是满屏乱码。 所以,如果你经常跨平台传压缩包,别偷懒,压缩前把文件名改成拼音或英文,一劳永逸。要是已经乱码了,也别急着删,先按上面说的试一遍。实在不行,把压缩包发到手机里,用手机上的解压工具试试——手机端的解压软件大多默认按UTF-8处理,有时候反而能歪打正着。我朋友那个包,最后就是用手机解开的,她当时看我的眼神,像看个魔术师。其实我哪会什么魔术,只是比她多踩过几次坑罢了。 |