【发布时间】:2015-04-16 17:58:27
【问题描述】:
当文件名包含“áéãô”等特殊字符时,我在将文件添加到 zip 时遇到问题。代码非常简单,一切正常。这里是:
$newZip = new ZipArchive();
$newFile = DIR."/".$repo_name.".zip";
$open_newZip = $newZip->open($newFile, ZIPARCHIVE::CREATE);
if($open_newZip === TRUE){
sort($arquivos);
foreach( $arquivos as $arquivo ){
//I tried this but it doesn't make any difference at all
header('Content-Type: text/html; charset=utf-8');
$newZip_baseName = pathinfo($arquivo, PATHINFO_BASENAME);
$newZip->addFile($arquivo, $newZip_baseName);
} else {
echo 'Error openning the new file. Error: '. $open;
}
例如:文件是“1Nandõ Reis - N.mp3”,在 zip 文件中显示为“1Nand├╡ Reis - N.mp3”。解压后(对吗?哈哈哈)文件还是“1Nand├╡ Reis - N.mp3”。
我试过这个:Getting UTF-8 filenames to work with PHP ZipArchive(这给了我不同的结果 - 文件像“1Nandї Reis - N.mp3”一样保存 - 但不能解决我的问题)
以及官方的错误报告:https://bugs.php.net/bug.php?id=53948
上面的大多数链接都表明这一点:PHP ZipArchive non-English filenames return funky filenames within archive 我也尝试过但没有成功。恐怕所有这些解决方案都仅适用于 Windows。有人有针对 Linux 的解决方法吗?
【问题讨论】:
标签: php linux ubuntu encoding ziparchive