这个问题搞了我一晚上,到现在也没找到合适的方法,真是郁闷呀,记录下找到的东西,如下:
问题:
我在rails中使用fasterCSV导出DB里面的东西,编码为UTF-8,在linux上查看一切正常,但是我先后采用了zip,gzip,tar,7zip,rar,以及biz等压缩后传送给windows,打开发现是乱码。
具体表现为:
1、zip,tar,gzip,biz等压缩出来的,中文文件名和数据文件均乱码;
2、用7zip和rar打包出来的,在windows下打开,中文名正常,但是内部的数据文件还是乱码。
在linux与windows平台间交换压缩包文件,如果文件名中含有中文,有时候就会遇到乱码问题,给平台间的文件交换带来麻烦。今天仔细研究了一下,总结下面一些经验,供大家分享
1. 7zip和rar(我用的是3.50,好像rar的旧版本不行)会对文件名编码进行转换,内部文件名编码使用
unicode,所以使用这两种格式在linux和windows平台间交换不会有乱码问题,其他格式(比如tar.gz, tar.bz2)似乎不进行转换,所以不适合平台间交换。但鉴于linux的自由精神,不推荐使用商业软件rar,而推荐自由的7zip。但是,我发现用 Ubuntu中(我的是Edge)file-roller处理7zip文件还是会存在问题,而用命令行就没有问题,所以推荐大家用命令行的7zip。
按照找到的资料,应该只有文件名会出现乱码,正文内容不会乱码的呀,真是奇怪。
我本地测试用7zip或者rar压缩以后,中文的文件名正常了,但是内部的数据文件中的中文还是乱码,奇怪呀。


litkt 于 2008-03-17 15:47:34发表:
两边编码设为相同不就结了?
WINDOWS编码是GB18030,linux一边设为GB2312即可,二者在简体字层次上兼容。不是必要,文件名不要用UTF-8。
linux就是设为GB2312,在foxfire和GNUMERIC、OPENOFFICE里仍然可用UTF-8编码,不过是自动转换。
现在linux底层是UNICODE,方便了各种文字的使用者,表层想设成什么代码页都可以。
但表层还是用代码页的好,这样兼容旧软件,直接使用UNICODE是背上了自己用不到的文字的包袱,没有必要,反正网上交流时转换是自动的。