我使用ZipArchive
压缩所有照片。原始照片的文件名具有字符unicode。将所有照片压缩为zip文件后,照片的文件名将更改为其他字符。
例如,照片的原始文件名为"កែវ កេត_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();
这些是带有unicodes的文件:
文件名与原始文件的字符unicode不同:
我当前的服务器是Ubuntu 14.10 64bit(本地机器)和Gentoo 64bit(真实服务器)。结果是一样的。
提前致谢!
答案 0 :(得分:1)
我在您的文字中找不到任何问题,但仍会尽力帮助解决原因。
zip
格式将文件名存储为字节序列。
由zip处理工具决定如何解释名称,例如nautilus
。