使用 ownCloud 上傳及下載中文檔名的檔案,都沒有問題,但如果要用 zip 檔打包下載時,中文檔案或目錄,都會出現亂碼。
中文目錄沒有問題
中文檔名也沒有問題
[@more@]但使用 zip 檔打包下載整個目錄時,會出現亂碼
在網路搜尋了一下,找到了解決的方法:工作雜記: Owncloud中文目錄包裹下載
切換目錄
# cd /var/www/html/owncloud/lib/private
備份原檔
# cp files.php files.php.`date +%F`
修改 files.php
紅色 的部分是修改的部分
# vim files.php
foreach ($files as $file) {
$file = $dir . ‘/’ . $file;
if (OCFilesFilesystem::is_file($file)) {
$tmpFile = OCFilesFilesystem::toTmpFile($file);
self::$tmpFiles[] = $tmpFile;
$u8filename=iconv(“UTF-8”, “Big-5”, basename($file)); //for utf-8
// $zip->addFile($tmpFile, basename($file));
$zip->addFile($tmpFile,$u8filename);
} elseif (OCFilesFilesystem::is_dir($file)) {
self::zipAddDir($file, $zip);
}
}
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(OCFilesFilesystem::is_file($file)) {
$tmpFile=OCFilesFilesystem::toTmpFile($file);
OC_Files::$tmpFiles[]=$tmpFile;
$filename=iconv(“UTF-8”, “Big-5”, $filename); // for utf-8
$zip->addFile($tmpFile, $internalDir.$filename);
}elseif(OCFilesFilesystem::is_dir($file)) {
self::zipAddDir($file, $zip, $internalDir);
}
}
}