Używam klasy PHP ZipArchive do wypakowania pliku .zip, działa dobrze dla języka angielskiego, ale powoduje problemy w moim lokalnym języku (THAI).Błąd podczas zmiany nazwy rozpakowanego pliku zip na inne języki W PHP
Używam icov('utf-8','windows-874',$zip->getNameIndex($i))
do konwersji UTF-8 na THAI. To działa na nazwę folderu/pliku, ale nie działa dla wyodrębnionego pliku .zip i powodować ten błąd:
iconv(): Wykryto niedozwolony znak w ciągu wejściowego
Może ktoś proszę powiedzieć mi jaki jest problem?
Mój kod 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');
}
Po wyodrębnić plik zip, nazwa pliku nie jest jeden ustawić dla niego.
Jest to nazwa próbuję ustawić:
Oto moja spakowany plik:
https://www.dropbox.com/s/9f4j04lkvsyuy63/test.zip?dl=0
UPDATE
próbowałem rozpakować plik w systemie Windows XP, to działa dobrze ale nie w Windows 7.
Nikt nie może powiedzieć, chyba że pokazujesz, co zawiera łańcuch. (Pliki ZIP w rzeczywistości nie są znane z obsługi Unicode Większość narzędzi używa tylko lokalnych zestawów znaków asis.) – mario
Gdzie jest kod, którego używasz do rzeczywistego wyodrębniania treści? Czy możesz przesłać minimalny przykład pliku zip, który gdzieś podaje błąd (po dodaniu kodu, którego używasz do wyodrębnienia jego zawartości)? – MatsLindh
, ale nie jest lepiej pracować "THAI" z 'utf8' tak czy inaczej? Jaka jest potrzeba przekonwertowania go na 'windows-874'? –