簡體   English   中英

在zip php中寫入unicode文件名(Linux服務器)

[英]Write unicode file name in zip php (linux server)

我使用ZipArchive壓縮所有照片。 原始照片的文件名具有字符unicode。 將所有照片壓縮為zip文件后,照片的文件名將更改為其他字符。

例如,照片的原始文件名是"កែវ កេត_1429672475273.jpg" ,在壓縮文件中將是"сЮАсЯВсЮЬ сЮАсЯБсЮП_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();

這些是帶有unicode的文件:

在此處輸入圖片說明

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

在此處輸入圖片說明

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

提前致謝!

我在您的文字中找不到任何問題,但仍會嘗試幫助其解釋。

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

由zip處理工具決定如何解釋名稱,即在您的情況下是nautilus

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM