gpt4 book ai didi

php为具有unicode名称的文件创建zip文件

转载 作者:搜寻专家 更新时间:2023-10-31 21:36:38 26 4
gpt4 key购买 nike

在我的 php 应用程序中,我执行了以下操作:

$dn = sys_get_temp_dir() . '/' . uniqid('td', false);
if (mkdir($dn) === true)
{
$fn = $dn . '/' . '関連事業調査.xls';
$writer = new \PHPExcel_Writer_Excel5($wb);
$writer->save($fn);

$fzip = sys_get_temp_dir() . '/' . uniqid('td', false) . '.zip';
$password = $this->container->getParameter('ZipPassword');
$out = null;
$ret = null;
exec("zip -qjP $password $fzip $dn" . '/*', &$out, &$ret);
}

在 linux 环境中,它可以使用给定的密码正确创建 zip 文件。我可以毫无问题地在 Linux 中解压缩文件。但是,如果我将它下载到 Windows 并解压缩文件,文件名就会变得不正确。如何解决这个问题?

最佳答案

ZIP 文件没有指定的文件名编码*。因此,任何非 ASCII 字符的使用都是完全不可靠的。

*:不完全正确:有一个允许使用 UTF-8 文件名的格式扩展,zip 命令将使用它。但是 Windows 的 ZIP 接口(interface)(“压缩文件夹”)不支持它,并且总是使用默认的(“ANSI”)代码页来解释文件名字节。如果您知道您的目标受众都拥有具有特定语言环境的 Windows 机器,那么您可以定位该语言环境……否则,最好坚持使用 ASCII。

关于php为具有unicode名称的文件创建zip文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com