PHP ziparchive의 중국어 왜곡 문자에 대한 해결 방법: 먼저 압축 패키지를 열고 내부 파일 이름과 디렉터리를 트랜스코딩한 다음 트랜스코딩 후 압축 패키지를 닫고 압축을 풀기 위해 다시 엽니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
ZipArchive를 사용하여 PHP의 압축을 풀 때 중국어 문자 왜곡 문제에 대한 해결 방법
PHP 자체 ZipArchive를 사용하여 압축 해제 중국어 파일 이름을 가진 패키지는 문자 깨짐 현상이 발생하며 현상은 다음과 같습니다.
$zip = new \ZipArchive(); $res = $zip->open('./钱学森班.zip'); if ($res !== true){ throw new \Exception('打开压缩包失败'); }$zip->extractTo('./cache'); $zip->close();
기본값은 Windows입니다. Mac에서 패키지를 압축하는데 인코딩이 중국어 간체입니다. 압축을 풀 때 파일 변환 실패로 인해 압축 해제 결과가 예상과 다릅니다
압축된 패키지를 연 후 먼저 내부 파일 이름과 디렉터리를 트랜스코딩하세요. 트랜스코딩을 수행하려면 압축 패키지를 닫고 압축 해제를 다시 시작해야 합니다
구현 방법은 다음과 같습니다.
$zipName = './钱学森班.zip'; $zip = new \ZipArchive(); $res = $zip->open($zipName); if ($res !== true){ throw new \Exception('打开压缩包失败'); } // 加入此段↓ $fileNum = $zip->numFiles; for ($i = 0; $i < $fileNum; $i++) { $statInfo = $zip->statIndex($i, ZipArchive::FL_ENC_RAW); $zip->renameIndex($i, iconv('GBK', 'utf-8//IGNORE', $statInfo['name'])); } $zip->close(); $zip->open($zipName); // 截至↑ $zip->extractTo($extractTo); $zip->close();
변환 전 인코딩 판단을 위해 mb_Detect_encoding을 사용하면 여전히 UTF-8이 반환됩니다
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP ziparchive에 중국어 문자가 깨져 있으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!