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

Apa yang perlu dilakukan jika folder bercelaru apabila php memampatkan fail

藏色散人
Lepaskan: 2023-03-17 10:06:01
asal
1554 orang telah melayarinya

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'];
// 修改为下面一行
Salin selepas log masuk
$p_header['stored_filename'] = mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');
Salin selepas log masuk

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');
Salin selepas log masuk

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);
}
Salin selepas log masuk

$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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan