Die richtige Kodierung für Dateinamen in ZIP-Archiven, die in Windows erstellt und in Linux entpackt wurden

1650
Ole

Ich habe Probleme mit verschiedenen Zeichensätzen in Windows und Linux (Centos).

Ich habe Dateien mit Sonderzeichen in ihren Dateinamen aus vielen verschiedenen Sprachen. Das Zip-Archiv wird unter Win7 erstellt und auf einen Linux-Server hochgeladen. Unter Windows wurden alle Zeichen wie erwartet normal angezeigt. Nach dem Hochladen und Extrahieren mit phps ZipArchive()oder Linux unzipwurden einige Sonderzeichen mit merkwürdigen falschen Zeichen angezeigt.

Ich weiß, dass dies ein bekanntes Problem im Zusammenspiel von Windows und Linux ist, aber ich kann mein Problem nicht lösen. Ich habe versucht, meine ZIP-Datei mit verschiedenen Zeichensätzen zu entpacken, aber für mich funktionierte nichts. Auf Portugiesisch macht der Charakter õ eine Menge Probleme, aber ç ist in Ordnung.

aplicações.txt ist nach dem entpacken aplicaçΣes.txt

Soweit ich es richtig verstanden habe, verwendet Windows den ASCII-Code-Zeichensatz IBM860, aber manchmal lese ich windows-1257 und weiß nicht, welcher Zeichensatz verwendet wird, wenn das zip-Archiv mit WinRar unter Win7 erstellt wird. Gibt es eine Möglichkeit, dies zu überprüfen oder WinRar anzuweisen, UTF-8 zu verwenden?

Wenn das Zip - Archiv auf ein Linux - Betriebssystem hochgeladen und entpackt durch ZipArchive()(php) oder auf dem Linux bashmit unzip, sind die Dateinamen falsch. Ich denke, es liegt daran, dass Linux UTF-8 verwendet.

Unter Linux-Befehl habe ich versucht:

unzip -O windows-1257 uploaded.zip -d zipout/ 

Unter Linux-Befehl habe ich versucht:

unzip -O IBM860 uploaded.zip -d zipout/ 

Unter Linux-Befehl habe ich versucht:

unzip -O IBM437 uploaded.zip -d zipout/ 

Unter Linux-Befehl habe ich versucht:

unzip -O UTF-8 uploaded.zip -d zipout/ 

Unter Linux-Befehl habe ich versucht:

unzip -O UTF-16 uploaded.zip -d zipout/ 
2
Haben Sie es mit einer beliebigen Cross-Plattform-Software versucht, die für Windows und Linux verfügbar ist, z. B. `7zip`. Nur neugierig, ob es einen Unterschied macht. Sandeep vor 5 Jahren 1
Offenbar funktionieren WinRAR-Versionen 3.92 und früher nicht ordnungsgemäß mit UTF-8. Welche Version von WinRAR verwenden Sie? Andrew Morton vor 5 Jahren 1
Ich habe zwar 7z ausprobiert, auch mit dem eigenen Dateiformat .7z, aber mit dem gleichen Ergebnis. Ich war verwirrt, weil ich dachte, dass 7zip standardmäßig utf-8 für die Kodierung verwendet, sogar unter Windows. Gibt es eine Möglichkeit, 7zip explizit für die Verwendung von utf-8 zu sagen? Ole vor 5 Jahren 0
WinRar hat wahrscheinlich cp437 verwendet. Õ existiert jedoch nicht in diesem Zeichensatz. Sie können alle Dateinamen ändern, bevor Sie die Dateien komprimieren. Wenn Sie am Ende jedes Dateinamens z. B. ein chinesisches Zeichen hinzufügen, zwingen Sie WinRar, Utf8 zu verwenden. SpiderPig vor 5 Jahren 0
Okay, das würde Sinn machen. Vielen Dank für Ihren Hinweis mit dem chinesischen Zeichen. Ich werde dies auch versuchen, um sicherzustellen, dass es mit der utf-8-Codierung ordnungsgemäß funktioniert. Ole vor 5 Jahren 0

1 Antwort auf die Frage

0
Vi Lugao

Wenn die Sprache Ihrer Windows 7-Version für das Zippen von Dateien die brasilianische portugiesische Sprache ist, ist die Kodierung wahrscheinlich IBM-850 oder Windows-1252. Probiere diese.

Ich habe auch dieses Problem. Kommt aber auch vor, wenn Sie zwischen verschiedenen Windows-Sprachen wechseln. Beispielsweise verwendet die englische Version zwischen der englischen und der brasilianischen portugiesischen Windows-Version IBM-437 und die pt-BR-Version IBM-850.

Wenn Sie WinZip zum Komprimieren verwenden, tritt dieses Problem nicht auf. Ich empfehle nicht, das integrierte Windows zum Komprimieren und / oder Extrahieren zu verwenden, da dies ebenfalls zu einem Codierungsproblem bei Dateinamen führt.