当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [分享]在linux与windows平台间交换含有中文文件名的压缩包文件
帖子发表于 : 2006-12-11 19:42 

注册: 2005-12-13 20:56
帖子: 53
送出感谢: 0 次
接收感谢: 0 次
在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


附件:
unzip.gbk.gz [683 Bytes]
被下载 60 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-12-13 23:00 

注册: 2006-06-07 18:15
帖子: 244
送出感谢: 1
接收感谢: 2
zip 也是这个问题.
所以现在我只创建 7z 的压缩文件了.

完全支持 开放的 7zip!


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-12-15 18:23 
头像

注册: 2006-10-29 14:06
帖子: 152
送出感谢: 0 次
接收感谢: 0 次
呵呵,我的 rar 是正版的,所以不要浪费,在 linux 下我也是用 rar ,不存在版权问题。

原以为 zip 就可以解决这个问题。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-11-06 18:57 

注册: 2005-10-30 21:24
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
感谢楼主!!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-11-07 12:08 

注册: 2007-11-02 1:24
帖子: 57
送出感谢: 0 次
接收感谢: 0 次
楼主.关于中文ubuntu跟windows之间copy都乱码的问题.
能帮助解决下吗,
听说转换utf8编码.

新手呀.尽量具体


_________________
月圆之夜,华山之颠,一人独来,白衣如雪,冰刀如电


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-11-07 12:20 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
elevenll 写道:
楼主.关于中文ubuntu跟windows之间copy都乱码的问题.
能帮助解决下吗,
听说转换utf8编码.

新手呀.尽量具体


先把你的问题描述的具体一点


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-11-09 9:50 

注册: 2007-11-09 9:48
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
出错了,能帮忙分析一下原因吗?

$ ./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)


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译