我使用PHP ZipArchive类来解压缩.zip文件,在英语上运作良好,但在我的本地语言(泰语)中引起问题。
我使用iconv('utf-8', 'windows-874', $zip->getNameIndex($i))
将utf-8转换为泰语。它能够用于转换文件夹/文件的名称,但无法用于已解压缩的.zip文件并导致以下错误:
iconv():在输入字符串中检测到非法字符
请问有人能告诉我这里的问题是什么吗?
我的PHP代码
$file = iconv('utf-8', 'windows-874', $_GET['File']);
$path = iconv('utf-8', 'windows-874', $_GET['Path']);
$zip = new ZipArchive;
if ($zip->open($file) === TRUE) {
// convert to Thai language
for($i = 0; $i < $zip->numFiles; $i++) {
$name = $zip->getNameIndex($i);
//echo iconv("charset zip file", "windows-874", $name);
//$zip->extractTo($path,$name); -> this problem
}
$zip->close();
echo json_encode('unZip!!!');
} else {
echo json_encode('Failed');
}
我解压缩文件后,文件名并不是我设置的那个。
这是我尝试设置的名称:
这是我的压缩文件:
https://www.dropbox.com/s/9f4j04lkvsyuy63/test.zip?dl=0
更新
我尝试在Windows XP中解压缩该文件,结果正常,但在Windows 7中则不行。
utf8
处理“THAI”不是更好吗?为什么要转换成windows-874
呢? - Guilherme Nascimento