2015-04-24 42 views
1

我用ZipArchive來壓縮所有的照片。原始照片的文件名具有字符unicode。將所有照片壓縮爲zip文件後,照片的文件名將更改爲另一個字符。在zip中編寫unicode文件名php(linux服務器)

例如照片的原始文件名是"កែវ កេត_1429672475273.jpg",它將在zip文件中爲"сЮАсЯВсЮЬ сЮАсЯБсЮП_1429672475273.jpg"

這是我簡單的代碼:

$zip = new ZipArchive(); 
$filename = 'photos.zip'; 
if ($zip->open($filename, ZipArchive::OVERWRITE) !== TRUE) { 
    exit("Cannot open <$filename>"); 
} 
$teachers = array(
    'កែវ កេត_1429672475273.jpg', 
    'ផាន់ ចាន់រស្មី_1429671047820.jpg', 
    'ម៉ៅ ហៀង_1427422340782.jpg', 
); 
foreach ($teachers as $teacherFileName) { 
    if (file_exists($teacherFileName) && is_file($teacherFileName)) { 
     $zip->addFile($teacherFileName, 'teachers/' . $teacherFileName); 
    } 
} 

$zip->addFromString('version.txt', date('YmdHis')); 
$zip->close(); 

這些文件與統一碼:

enter image description here

的文件名不是原始文件相同字符的Unicode:

enter image description here

我目前的服務器是Ubuntu 14.10 64bit(本地機器)和Gentoo 64bit(真實服務器)。結果是一樣的。

在此先感謝!

回答

1

我在你的文本中找不到任何問題,但仍然會試圖幫助它爲什麼如此。

zip格式將文件名存儲爲字節序列。

這取決於zip處理工具如何解釋名稱,即您的情況nautilus

相關問題