查看文章
 
windows下zip包在linux下用unzip解压文件名乱码
2009-12-13 23:26
换系统时,把几首歌打了个zip包备份了下;换成linux后再unzip就是乱码了。
查了下,windows下用gb2312编码的zip里的文件名,linux下unzip只支持utf-8。(查到unzip -O cp936可以使用指定编码解压,但我试了没用)
然后看到说跨系统的压缩包最好用7z或jar格式的,它们支持utf-8存储文件名。

后来我翻了下php手册,自己用php来解压我的zip包,解决乱码问题:

1  <?php
 2  $a
=zip_open('other.zip');
 3  while (
$e=zip_read($a)){
 4      
$fz zip_entry_filesize($e);
 5      
$fn iconv('GBK','UTF-8',zip_entry_name($e));
 6      if (!
$fz){//dir
 7          
mkdir($fn);
 8          continue;
 9      }
10      if (!
zip_entry_open($a$e))
11          continue;
12      
file_put_contents($fnzip_entry_read($e$fz));
13      echo 
"$fz\t$fn\n";
14      
zip_entry_close($e);
15  }
16  
zip_close($a);
17  
?>


cli下可以用 php -s file.php > 1.html 来生成语法高亮的php代码。

类别:Php| |分享到i贴吧|浏览(809)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu