【发布时间】:2023-03-09 12:20:02
【问题描述】:
我通过 UTF-8 编码的 php 脚本创建了一些 .txt 文件(带有希腊字符)。 当我尝试从 ftp 下载和读取这些文件时,一切正常(没有编码问题)。
当我将这些文件压缩到 zip 存档时,我遇到了所有希腊字符和 newLines 字符的编码问题。
压缩脚本:
$zip = new ZipArchive();
$filename = "my_zip.zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$files = glob('users/'.$_SESSION['s_uid'].'/*'); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file))
//$zip->addFile($thisdir . $file, basename($file));
$zip->addFile($thisdir . $file, iconv("UTF-8","UTF-8", basename($file)));
//echo $file; // delete file
}
$zip->close();
【问题讨论】:
-
首先,
iconv("UTF-8","UTF-8", str)什么都不做(例如,返回str),除了如果str包含无效的 UTF-8 序列,则返回一个空字符串。您对 ZIP 文件中的文件名或文件内容有疑问吗? -
您面临什么样的问题? PHP代码抛出错误? ZIP 无法解压?
-
问题是我创建的压缩文件改变了压缩文件内容的编码。