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($fn, zip_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)