>  기사  >  백엔드 개발  >  PHP가 파일을 압축할 때 폴더가 깨졌을 경우 어떻게 해야 할까요?

PHP가 파일을 압축할 때 폴더가 깨졌을 경우 어떻게 해야 할까요?

藏色散人
藏色散人원래의
2022-10-28 09:22:301525검색

php가 파일을 압축할 때 폴더가 왜곡되는 해결 방법: 1. "mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');" 내용으로 "pclzip.php" 클래스 파일을 수정합니다. . 클래스 패키지 파일을 변경하지 않고 "iconv("GBK","UTF-8//IGNORE",$file);"만 수정하세요.

PHP가 파일을 압축할 때 폴더가 깨졌을 경우 어떻게 해야 할까요?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터.

PHP로 파일을 압축할 때 폴더가 깨지면 어떻게 해야 하나요?

PclZip에서 중국어 문자 깨짐 문제 해결

Pclzip을 사용할 때 파일을 압축/압축 해제할 수 없습니다. 오류 메시지를 추적해 보면 파일/디렉토리를 열 수 없지만 폴더 권한이 있는 것으로 나타났습니다. 파일 경로를 인쇄한 후 잘못된 것으로 나타났습니다. 이 문제가 발생하는 이유는 Windows에서 zip의 파일 이름 인코딩이 gb2312인 반면 PHP는 utf-8 인코딩을 사용하기 때문입니다.

방법 1: 해결 방법은 pclzip.php 클래스 파일을 수정하는 것입니다:

압축 파일 부분 수정:

privAddFile 방법:

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

압축 해제된 파일 부분 수정:

privExtractFile 방법:

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

방법 2: 클래스 패키지 파일을 변경하지 않고 다음 코드를 사용하면 문자가 왜곡된 중국어 파일 이름을 압축 해제할 수 있습니다.

$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은 압축 해제 후의 일반적인 파일 이름이지만 서버에 있는 파일 이름입니다. 이 방법을 사용하면 여전히 왜곡되어 $file이 일반 중국어 파일 이름으로 만들어집니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP가 파일을 압축할 때 폴더가 깨졌을 경우 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.