在linux与windows平台间交换压缩包文件,如果文件名中含有中文,有时候就会遇到乱码问题,给平台间的文件交换带来麻烦。今天仔细研究了一下,总结下面一些经验,供大家分享
1. 7zip和rar(我用的是3.50,好像rar的旧版本不行)会对文件名编码进行转换,内部文件名编码使用
unicode,所以使用这两种格式在linux和windows平台间交换不会有乱码问题, 其他格式(比如tar.gz, tar.bz2)似乎不进行转换,所以不适合平台间交换。但鉴于linux的自由精神,不推荐使用商业软件rar,而推荐自由的7zip。但是,我发现用ubuntu中(我的是Edge)file-roller处理7zip文件还是会存在问题,而用命令行就没有问题,所以推荐大家用命令行的7zip。
2。解压含有中文文件名的zip文件
如果收到windows压缩的含有中文文件名的zip文件,在linux下解压就会乱码,找了一圈,似乎没有软件能够解决这个问题,于是乎,就自己用python编了一个脚本,该脚本假设你已经安装7zip,并且locale为UTF-8
[分享]在linux与windows平台间交换含有中文文件名的压缩包文件
-
- 帖子: 53
- 注册时间: 2005-12-13 20:56
- 联系:
[分享]在linux与windows平台间交换含有中文文件名的压缩包文件
- 附件
-
- unzip.gbk.gz
- (683 Bytes) 已下载 77 次
- jfxwc
- 帖子: 152
- 注册时间: 2006-10-29 14:06
-
- 帖子: 57
- 注册时间: 2007-11-02 1:24
-
- 帖子: 3182
- 注册时间: 2006-03-10 15:10
- 来自: xi'an China
- 联系:
-
- 帖子: 1
- 注册时间: 2007-11-09 9:48
出错了,能帮忙分析一下原因吗?
$ ./unzip.gbk 1.zip
unzip 1.zip
Traceback (most recent call last):
File "./unzip.gbk", line 61, in ?
fix_encoding(out)
File "./unzip.gbk", line 42, in fix_encoding
fix_encoding(filename)
File "./unzip.gbk", line 42, in fix_encoding
fix_encoding(filename)
File "./unzip.gbk", line 37, in fix_encoding
new_filename = latin2cn(filename)
File "./unzip.gbk", line 8, in latin2cn
latin = uni.encode('latin1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 12-16: ordinal not in range(256)
$ ./unzip.gbk 1.zip
unzip 1.zip
Traceback (most recent call last):
File "./unzip.gbk", line 61, in ?
fix_encoding(out)
File "./unzip.gbk", line 42, in fix_encoding
fix_encoding(filename)
File "./unzip.gbk", line 42, in fix_encoding
fix_encoding(filename)
File "./unzip.gbk", line 37, in fix_encoding
new_filename = latin2cn(filename)
File "./unzip.gbk", line 8, in latin2cn
latin = uni.encode('latin1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 12-16: ordinal not in range(256)