[英]php creating zip file for files with unicode names
在我的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接口(“压缩文件夹”)不支持它,并始终使用默认(“ANSI”)代码页来解释文件名字节。 如果您知道目标受众都拥有具有特定区域设置的Windows框,那么您可以定位该区域设置...否则,最好坚持使用ASCII。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.