ZipArchive (using libzip) encodes comments in UTF-8/ASCII, but some softwares on Windows show comments in ANSI (such as GBK...), so we should :
<?php
    $_charset = 'GBK';
    $file = 'D:/boaphp.zip';
    $comment = '中文ABC123';
    
    $zip = new ZipArchive;
    $res = $zip->open($file, ZipArchive::CREATE);
    if ($res) {
        if($_charset){ $zip->close();
            
            $str = mb_convert_encoding($comment, $_charset, 'UTF-8');
            $fh = fopen($file, 'r+b');
            fseek($fh, -2, SEEK_END);
            $str = pack('v', strlen($str)) . $str;
            fwrite($fh, $str);
            fclose($fh);
        }else{ $zip->setArchiveComment($comment);
            $zip->close();
        }
    }
?>