繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM