Linux压缩文件在windows下面显示乱码的坑

Published on 2014 - 10 - 22
  • 在处理压缩文件的时候,为了避免乱码,python操作csv文件的时候,csv文件和文件名的编码全部都是utf-8, 使用ubuntu下面的tar或者zip进行压缩的时候,文件名的编码utf8使得压缩包放到windows下面文件名编程了乱码,但是csv文件的内容不会是乱码。因为文件加入了utf8-BOM头,windows默认使用utf8打开csv文件。 但是文件名字和sheet表的tab名字是乱码。

这是因为文件名windows没有解析出来。
此时神奇的7za命令可以起作用了。

  • 7zip安装方法如下:

ubuntu下面 sudo apt-get install p7zip
osx下面 brew install p7zip
当然osx使用了sf的文件挂载,需要使用代理 proxychains4 brew install p7zip
记得要写好了压缩文件和压缩后的文件路径 不写路径的话 默认是当前文件夹 7zip的命令说明输入7za -h即可以看到。压缩命令示意:
7za a -t7z -r /Users/no13bus/Downloads/csv/Mytest.7z /Users/no13bus/Downloads/csv/*.csv
7za的一个跟编码有关的选项是 -scs{UTF-8 | WIN | DOS} 但是我在使用的时候 它说的是这个选项没有 不知道应该是神马姿势。

  • 使用7zip的神奇之处在于压缩文件的时候直接压缩即可 在windows和linux下面都能显示正常的,不知道怎么回事。按说名字是utf8的编码 在windows下面是不能显示正常的

python代码如下:

subprocess.call(['7za', 'a', '-t7z','-r','/Users/no13bus/Downloads/csv/Mytest.7z', '/Users/no13bus/Downloads/csv/*.csv'])
Comments
Write a Comment