zip 格式的压缩包应该是我们最常见的一种压缩格式了,不过这种格式虽然常见,但却有一点很不好,就是它并不会保存里面文件的编码格式,而这也会导致在解压压缩包时出现一种很常见的问题,就是乱码。
当前 Linux 下的编码格式一般都是 utf-8 格式,Windows 下一般都是 gbk,(没用过 Mac,所以编码格式不清楚,不出意外应该也是 utf-8 格式的吧),如果不考虑跨平台使用这些压缩文件的话,问题可能不会很大,但是一旦牵扯到跨平台,在解压 zip 格式的文件时就很容易出现乱码的情况。但是根据我过去的体验来说,在 Linux 下使用 unzip 命令来解压非 utf-8 编码的 zip 文件时,十有八九会出现乱码的情况。
而今天我想要介绍的就是一个终端解压程序 unarchiver/unar,可以避免在 Linux 下解压 zip 文件时可能会出现的乱码情况。(因为我自己使用的系统是 Arch Linux,所以就只能介绍一下这边的情况)
在 Linux 下可以直接通过自己系统对应的包管理命令直接安装$ sudo pacman -S unarchiver #Arch Linux
$ sudo apt install unar #Debian/Ubuntu
unarchiver 中包含了两个程序,unar 和 lsar,其中 lsar 是用来查看压缩文件中的内容的,unar 是用来提取压缩文件中的内容的。Arch Linux 社区库(社区库是 community 库,不是 aur)中是包含 unarchiver 程序的,而其他的 Linux 发行版像是 Ubuntu 一般则只有 unar 这个程序。
使用的方法也很简单:$ lsar file.zip #列出压缩包中的内容
$ unar file.zip #提取压缩包中的内容到当前位置下的 file 文件夹当中
$ unar -o hello file.zip #也可以通过添加 -o 选项来将文件放到自己指定的文件夹当中
当然 unarchiver/unar 支持解压的压缩格式并不仅仅只有 zip 格式,事实上,当下比较流行的压缩格式,像是 rar、zip、tgz 等等它都是支持的。
不过还需要注意一点就是 unarchiver/unar仅仅是解压程序,并不支持打包压缩文件的功能。