使用 Codeigniter zip 库压缩时出现阿拉伯语文件名问题

我有某些文件要压缩,其中一些有阿拉伯名称,提取后,它们会损坏。我的 PHP 版本是 7.2.18,我使用的是 Codeigniter 3.1 框架。


实际文件名:كلمة العينة.docx 压缩文件名:+â+ä+à+¬_+º+ä+¦+è+å+¬.docx


public function generate_zip() {

        $this->load->library('zip');


        $zip_files = $this->document_model->get_documents();


        foreach ($zip_files as $zip_file) {     

            $this->zip->read_file('uploads/documents/' . $zip_file->document_file_name);

        }

        $this->zip->download('temp.zip');

    }


ITMISS
浏览 138回答 1
1回答

饮歌长啸

请尝试使用以下代码。/* creates a compressed zip file */function create_zip($files = array(),$destination = '',$overwrite = false) {    //if the zip file already exists and overwrite is false, return false    if(file_exists($destination) && !$overwrite) { return false; }    //vars    $valid_files = array();    //if files were passed in...    if(is_array($files)) {        //cycle through each file        foreach($files as $file) {            //make sure the file exists            if(file_exists($file)) {                $valid_files[] = $file;            }        }    }    //if we have good files...    if(count($valid_files)) {        //create the archive        $zip = new ZipArchive();        if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {            return false;        }        //add the files        foreach($valid_files as $file) {            $zip->addFile($file,$file);        }        //debug        //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;        //close the zip -- done!        $zip->close();        //check to make sure the file exists        return file_exists($destination);    }    else    {        return false;    }}$files_to_zip = array(    'عينة.txt',);//if true, good; if false, zip creation failed$result = create_zip($files_to_zip,'my-archive.zip');
打开App,查看更多内容
随时随地看视频慕课网APP