windows 中的 zip 类型压缩文件,linux 中 unzip 解压后文件名乱码

环境信息

  • centos 7

在 windows 系统添加到 zip 类型的压缩文件,上传到 Linux,使用 unzip 解压后,文件名乱码

$ unzip 测试文档.zip
Archive: 测试文档.zip
inflating: ═°╦▐╫╩╘┤╬┤╝╙├▄├╗╙╨╙├╡╜╡─┴╨▒э.csv

问题原因

主要的原因是因为 unzip 在解压的时候会将编码转化为其内部默认的编码,而默认的编码根本不支持中文 CP936 编码。因此我们需要在解压的时候明确的指定需要使用的编码。

$ unzip -O CP936 测试文档.zip 
Archive: 测试文档.zip
inflating: 测试文档.csv