public static function zipAddDir($dir,$zip,$internalDir=''){
$dirname=basename($dir);
$dirname=iconv("UTF-8", "Big-5", $dirname); // for utf-8
$zip->addEmptyDir($internalDir.$dirname);
$internalDir.=$dirname.='/';
$files=OC_Files::getdirectorycontent($dir);
foreach($files as $file){
$filename=$file['name'];
$file=$dir.'/'.$filename;
if(OC_Filesystem::is_file($file)){
$tmpFile=OC_Filesystem::toTmpFile($file);
OC_Files::$tmpFiles[]=$tmpFile;
$filename=iconv("UTF-8", "Big-5", $filename); // for utf-8
$zip->addFile($tmpFile,$internalDir.$filename);
}elseif(OC_Filesystem::is_dir($file)){
self::zipAddDir($file,$zip,$internalDir);
}
}
}
---------------------------------------------------
foreach($files as $file) {
$file=$dir.'/'.$file;
if(OC_Filesystem::is_file($file)) {
$tmpFile=OC_Filesystem::toTmpFile($file)
;
self::$tmpFiles[]=$tmpFile;
$u8filename=iconv("UTF-8", "Big-5", basename($file)); //for utf-8
$zip->addFile($tmpFile,$u8filename);
}elseif(OC_Filesystem::is_dir($file)) {
self::zipAddDir($file,$zip);
}
}
2013/10/1補充
http://www.bandicam.com/bandizip/
是一套可以切換文字編碼的壓縮解壓縮軟體,使用bandizip就可以解開檔名為utf-8編碼的zip檔。
這個部落格僅作為個人工作上遇到的問題和解決方案紀錄,相關步驟未經完整驗證,不一定適用於您所遭遇的狀況,系統如有問題建議您諮詢專業人士,不要自行操作不熟悉的指令或動作,以免造成更嚴重的損害。文中所提各軟體屬各軟體所有權人所有,軟體之異常情形大多為本人操作錯誤所造成,並非軟體原始設計之問題,且大多數問題都在軟體版本更新後獲得解決,本人因所知有限未能即時更新相關資訊,謹此致歉。
星期三, 12月 19, 2012
Owncloud中文目錄包裹下載
Owncloud提供私有雲端儲存環境的自由軟體解決方案,目前4.5版中文支援已經很完整,但是早期ZIP壓縮檔內的檔名不支援utf-8,所以使用ZIP格式下載整個目錄或多個檔案時大部分解縮軟體無法正確處理utf-8編碼的檔名,造成檔案目錄有中文亂碼問題。修改lib/files.php如下,可以將壓縮檔中的檔名改為以big-5編碼。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言