
ZipArchive::statName 함수는 zip 파일 내의 파일 이름을 가져오는 함수입니다. 하지만, 한글 이름을 가진 파일의 경우 첫 글자가 제대로 출력되지만 나머지 글자가 제대로 출력되지 않는 현상이 발생하는 이유는 다음과 같습니다.
이 현상은 PHP 버전과 운영체제에 따라 달라지지 않습니다. 대신, 이 현상은 zip 파일 내의 파일 이름이 UTF-8 인코딩이 아닌 다른 인코딩으로 저장되어 있기 때문입니다.
해결 방법은 다음과 같습니다.
1. zip 파일을 열 때, UTF-8 인코딩을 사용하여 열어야 합니다. PHP의 ZipArchive 클래스는 기본적으로 UTF-8 인코딩을 사용합니다.
2. zip 파일 내의 파일 이름을 UTF-8 인코딩으로 변환하여 가져와야 합니다. PHP의 iconv 함수를 사용하여 인코딩을 변환할 수 있습니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
php
$zip = new ZipArchive;
if ($zip->open('example.zip', ZipArchive::RDONLY)) {
$stat = $zip->statName('example.txt');
echo iconv('EUC-KR', 'UTF-8', $stat);
$zip->close();
} else {
echo '파일을 열 수 없습니다.';
}
이 코드는 zip 파일을 열 때, UTF-8 인코딩을 사용하여 열고, zip 파일 내의 파일 이름을 UTF-8 인코딩으로 변환하여 가져옵니다.
2025-07-06 13:51