gpt4 book ai didi

PHP - 在 Linux 上使用 ZipArchive 将文件添加到 zip 时出现编码错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:30 24 4
gpt4 key购买 nike

当文件名包含“áéãô”等特殊字符时,我在将文件添加到 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” - 但没有解决我的问题)

还有这个:http://grokbase.com/t/php/php-bugs/1127mqqbd8/php-bug-bug-53948-new-zip-archive-utf-8-filenames-problem

官方错误报告:https://bugs.php.net/bug.php?id=53948

上面的大部分链接都表明了这一点:PHP ZipArchive non-English filenames return funky filenames within archive我也尝试过但没有成功。恐怕所有这些解决方案仅适用于 Windows。有人有 Linux 的解决方法吗?

最佳答案

这是常见的“在我的电脑上我可以用那个名字保存一个文件,所以这是你的错”综合症。从来没有见过 Justin Bieber 的 MP3 文件名中有很多 ♥,“只是因为它可能”?

对于 Linux,我发现命令 convmv 听起来很有前途 — 参见 http://linux.die.net/man/1/convmv

我认为您也可以从 PHP exec() 它。

关于PHP - 在 Linux 上使用 ZipArchive 将文件添加到 zip 时出现编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29682544/

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