찾다
백엔드 개발PHP 문제PHP ziparchive에 중국어 문자가 깨져 있으면 어떻게 해야 합니까?

PHP ziparchive의 중국어 왜곡 문자에 대한 해결 방법: 먼저 압축 패키지를 열고 내부 파일 이름과 디렉터리를 트랜스코딩한 다음 트랜스코딩 후 압축 패키지를 닫고 압축을 풀기 위해 다시 엽니다.

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();

압축 해제 후:

 

Reason

기본값은 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(&#39;GBK&#39;, &#39;utf-8//IGNORE&#39;, $statInfo[&#39;name&#39;]));
}
$zip->close();
$zip->open($zipName);
// 截至↑

$zip->extractTo($extractTo);
$zip->close();

참고 사항

  • 트랜스코딩 후 원본 압축 패키지 파일이 수정되었기 때문에 다시 트랜스코딩할 수 없습니다. 원본 파일에 영향을 미치고 싶지 않다면 먼저 복사해야 합니다 (php-zip 확장자는 파일 스트림을 자체적으로 읽으므로 복사가 필요하지 않습니다)
  • 변환 전 인코딩 판단을 위해 mb_Detect_encoding을 사용하면 여전히 UTF-8이 반환됩니다

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

위 내용은 PHP ziparchive에 중국어 문자가 깨져 있으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구