php - 在 zip php 中写入 unicode 文件名(linux 服务器)

标签 php linux unicode utf-8 zip

我使用 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();

这些是带有 unicode 的文件:

enter image description here

文件名与原文件的字符unicode不同:

enter image description here

我当前的服务器是 Ubuntu 14.10 64 位(本地机器)和 Gentoo 64 位(真实服务器)。结果是一样的。

提前致谢!

最佳答案

我在您的文本中找不到任何问题,但仍会尽力帮助解决问题。

zip 格式将文件名存储为字节序列。

如何解释名称取决于 zip 处理工具,即在您的情况下 nautilus

关于php - 在 zip php 中写入 unicode 文件名(linux 服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842755/

相关文章:

php - 如何使用 php 将类 ='active' 添加到 html 菜单

php - mysqli_fetch_object 不返回某些表中字符串中的重音符号

c - 通过C输入sudo密码

css - 如何在网站中添加马拉雅拉姆语 unicode 字体

java - Android - 在没有 StringEscapeUtils 的情况下解码 unicode 字符?

php - Magento,使用 SQL 以编程方式将类别添加到脚本中的产品

phpExcel 无法处理工作表 v2.1

c++ - 确定 linux 发行版的宏

linux - 错误 : autoconf failed with exit status: 1

bash - 使用 shell 脚本时,如何复制名称中包含空格和 UNICODE 的文件?