Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apa yang perlu dilakukan jika folder bercelaru apabila php memampatkan fail

Apa yang perlu dilakukan jika folder bercelaru apabila php memampatkan fail

藏色散人
藏色散人asal
2022-10-28 09:22:301495semak imbas

Penyelesaian kepada folder bercelaru apabila memampatkan fail PHP: 1. Ubah suai fail kelas "pclzip.php" dengan kandungan "mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8' );"; 2. Tanpa menukar fail pakej kelas, cuma ubah suai "iconv("GBK","UTF-8//IGNORE",$file);".

Apa yang perlu dilakukan jika folder bercelaru apabila php memampatkan fail

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.

Apakah yang perlu saya lakukan jika folder bercelaru apabila php memampatkan fail?

Selesaikan masalah Cina PHP PclZip

Apabila menggunakan Pclzip, fail tidak boleh dimampatkan/nyahmampat Selepas menjejaki mesej ralat, ia ditemui bahawa fail/direktori tidak boleh dibuka Walau bagaimanapun, keizinan folder adalah betul Selepas mencetak laluan fail, saya mendapati ia bercelaru. Sebab masalah ini ialah pengekodan nama fail dalam zip di bawah windows ialah gb2312, manakala php menggunakan pengekodan utf-8.

Kaedah 1: Penyelesaiannya adalah untuk mengubah suai fail kelas pclzip.php:

Ubah suai bahagian fail termampat:

kaedah privAddFile:

//$p_header['stored_filename'] = $p_filedescr['stored_filename'];
// 修改为下面一行
$p_header['stored_filename'] = mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');

Pengubahsuaian separa fail yang dinyahmampat:

Dalam kaedah privExtractFile:

$p_entry['filename'] = $p_path."/".$p_entry['filename'];
// 加入下面一行
$p_entry['filename'] = mb_convert_encoding($p_entry['filename'], 'UTF-8', 'gb2312');

Kaedah 2: Tanpa menukar fail pakej kelas, anda boleh menggunakan kod berikut untuk menyahmampat Nama fail Cina dengan aksara bercelaru Kodnya adalah seperti berikut:

$file_type = mb_detect_encoding($file,array('ASCII','GB2312','GBK','UTF-8','LATIN1','BIG5'));
if($file_type=='EUC-CN'){
    $file = iconv("GBK","UTF-8//IGNORE",$file);
}

$file ialah nama fail biasa selepas penyahmampatan, tetapi nama fail pada pelayan dalam kaedah ini masih bercelaru, tetapi $file adalah nama fail Cina biasa semasa membentuk.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika folder bercelaru apabila php memampatkan fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn