Umlaute in ZIP vom Mac unter Windows kaputt: die Lösung
Wenn ein ZIP vom Mac mit Umlauten im Dateinamen unter Windows plötzlich Namen wie Müller_Vertrag.pdf statt Müller_Vertrag.pdf zeigt, wurde das Archiv mit der falschen Zeichenkodierung entpackt; erneutes Entpacken mit 7-Zip oder einem anderen UTF-8-fähigen Programm behebt das in der Regel. Sehen die Namen dagegen richtig aus, aber die Windows-Suche findet sie nicht, ein Upload-Portal lehnt sie ab oder Sie haben auf einmal zwei Dateien namens Jörg.jpg nebeneinander, dann sind die Umlaute als zwei Zeichen gespeichert (ein „u“ plus ein frei schwebendes Trema) und müssen normalisiert werden. Beide Probleme stammen aus demselben ZIP, haben aber unterschiedliche Lösungen. Der erste Schritt ist deshalb, sie auseinanderzuhalten.
Warum Umlaute in einem ZIP vom Mac unter Windows kaputtgehen
Eine ZIP-Datei enthält keine einheitliche, universelle Regel dafür, wie Dateinamen kodiert sind. Jedes Programm, das ein Archiv erstellt, entscheidet selbst, wie es die Namen schreibt, und jedes Programm, das eines öffnet, entscheidet selbst, wie es sie liest. Mac und Windows haben hier über Jahre unterschiedliche Entscheidungen getroffen, und Umlaute, ß und Akzentbuchstaben liegen genau auf dieser Bruchlinie.
Ursache 1: Zeichensalat durch die falsche Codepage
Wenn Sie im Finder mit der rechten Maustaste auf einen Ordner klicken und Komprimieren wählen, schreibt macOS die Dateinamen im ZIP als UTF-8. Ältere Versionen des Windows-Explorers und manche Drittprogramme gingen stattdessen davon aus, dass Namen in einem ZIP die alte Windows-Codepage verwenden. Liest man UTF-8-Bytes, als wären sie Windows-1252, wird aus ü ein ü, aus ö ein ö, aus ä ein ä und aus ß ein ß. Deshalb wird Müller zu Müller, Größe zu Größe und Übersicht zu Übersicht.
Das ist ein reines Anzeige- und Entpackproblem. Die Bytes im Archiv sind in Ordnung; das Programm, das sie entpackt hat, hat falsch geraten.
Ursache 2: zerlegte Umlaute (NFD), die richtig aussehen, es aber nicht sind
Selbst wenn das Entpacken perfekt läuft, gibt es ein zweites, leiseres Problem. macOS speichert einen Umlaut gern als zwei Unicode-Codepunkte: den Grundbuchstaben, gefolgt von einem separaten kombinierenden Trema (ü → u + ◌̈). Fachleute nennen das Normalisierungsform D (NFD). Windows, Webbrowser und die meisten Server erwarten dagegen das einzelne, vorkomponierte Zeichen, Normalisierungsform C (NFC). Das ß ist davon übrigens nicht betroffen, weil es kein zusammengesetztes Zeichen ist; é, ü, ö und ä sind es sehr wohl.
Windows legt ohne Murren eine Datei an, deren Name u + kombinierendes Trema enthält. Auf dem Bildschirm wird das als ü dargestellt, es sieht also nichts falsch aus. Für das Dateisystem ist es aber eine andere Zeichenkette als das ü, das Sie auf einer deutschen Tastatur tippen. Die Folgen zeigen sich später:
- Die Windows-Suche und das Suchfeld im Explorer finden
Müllernicht, wenn Sie es eintippen. - Ein Skript oder ein SVERWEIS in Excel, der auf den Dateinamen abgleicht, scheitert genau bei den Dateien mit Umlauten.
- Kopiert man den entpackten Ordner neben einen vorhandenen, entstehen scheinbare Duplikate: zweimal
Lebenslauf_Müller.docx, mit unterschiedlicher Größe und unterschiedlichem Datum. - Ein Webformular oder Dokumentenportal lehnt den Upload ab oder speichert den Namen mit seltsamen
%CC%88-Sequenzen in der URL.
Wenn Ihre Symptome zu dieser Liste passen, hilft erneutes Entpacken nicht. Die Namen müssen nach dem Entpacken von NFD nach NFC umgewandelt werden.
Schnelltest: welches Problem haben Sie?
Meist erkennt man es schon an der Dateiliste.
- Zeichensalat ist sichtbar (
ü,ö,ß,–): Das ist das Codepage-Problem, Ursache 1. Weiter mit dem nächsten Abschnitt. - Namen sehen normal aus, verhalten sich aber seltsam: wahrscheinlich NFD, Ursache 2. Bestätigen Sie das in PowerShell:
$name = (Get-Item -LiteralPath "C:\Users\Sie\Downloads\entpackt\Müller_Vertrag.pdf").Name
$name.Length
$name.IsNormalized([Text.NormalizationForm]::FormC)
Setzen Sie den Pfad zu einer der verdächtigen Dateien ein. Wenn Length um eins höher ist als die Anzahl der sichtbaren Zeichen (Müller_Vertrag.pdf hat 18 Zeichen, NFD liefert aber 19) und IsNormalized False zurückgibt, ist der Name zerlegt.
Schneller geht es mit der Maus: Drücken Sie im Explorer F2 auf der Datei, setzen Sie den Cursor direkt hinter das ü und drücken Sie einmal Rücktaste. Verschwinden nur die Punkte und ein schlichtes u bleibt stehen, war das Trema ein eigenes Zeichen.
Zeichensalat beheben: das Mac-ZIP mit einem UTF-8-fähigen Programm entpacken
Löschen Sie den falsch benannten entpackten Ordner, damit Sie nicht zwei Kopien haben, und entpacken Sie die ursprüngliche .zip-Datei erneut mit einem Programm, das UTF-8-Namen liest.
7-Zip (kostenlos, Windows)
- Installieren Sie 7-Zip von der offiziellen Seite, falls noch nicht vorhanden.
- Klicken Sie im Explorer mit der rechten Maustaste auf das ZIP und wählen Sie 7-Zip › Hier entpacken (unter Windows 11 müssen Sie eventuell erst auf Weitere Optionen anzeigen klicken).
- Prüfen Sie die entpackten Namen. Aus
Müllersollte jetztMüllergeworden sein.
Eingebautes Entpacken in Windows 10 und 11
Aktuelle Windows-Versionen kommen mit UTF-8-Namen in ZIPs deutlich besser zurecht als ältere. Wenn eine Kollegin auf einem aktuellen Rechner dasselbe Archiv ohne Zeichensalat entpackt, liegt es an Ihrem Entpackprogramm, nicht an der Datei. Versuchen Sie Alle extrahieren im Explorer oder in PowerShell:
Expand-Archive -LiteralPath "C:\Pfad\zum\archiv.zip" -DestinationPath "C:\Pfad\zum\ziel"
Wenn auch 7-Zip Zeichensalat zeigt
Gelegentlich wurde auf Mac-Seite ein altes oder ungewöhnliches Packprogramm verwendet, das die Namen in Mac OS Roman oder einer anderen alten Kodierung geschrieben hat. 7-Zip und WinRAR lassen Sie beim Öffnen eines Archivs eine Codepage wählen; probieren Sie die westeuropäischen Optionen durch, bis die Namen stimmen. Hilft nichts, bitten Sie den Absender, das Archiv neu zu erstellen, entweder über Komprimieren im Finder oder mit zip -r im Terminal; beide schreiben UTF-8.
Sobald die Namen korrekt angezeigt werden, führen Sie den NFD-Test aus dem vorherigen Abschnitt durch. Es kommt häufig vor, dass man Ursache 1 behebt und darunter Ursache 2 entdeckt.
Zerlegte Umlaute nach dem Entpacken reparieren
Dieser Schritt wandelt u + kombinierendes Trema in ein einzelnes ü um, ebenso jeden anderen Umlaut oder Akzentbuchstaben im Ordner. Es gibt zwei praktikable Wege.
Variante A: Umbenennen per PowerShell (ohne zusätzliche Software)
Dieses Skript benennt jede Datei und jeden Ordner unterhalb eines Pfads in die NFC-Form um. Führen Sie es zuerst an einer Kopie aus, wenn der Ordner wichtig ist.
$root = "C:\Pfad\zum\entpackten\Ordner"
Get-ChildItem -LiteralPath $root -Recurse |
Sort-Object { $_.FullName.Length } -Descending |
ForEach-Object {
$fixed = $_.Name.Normalize([Text.NormalizationForm]::FormC)
if ($fixed -ne $_.Name) {
$target = Join-Path $_.Directory.FullName $fixed
if (Test-Path -LiteralPath $target) {
Write-Warning "Übersprungen (Name existiert bereits): $($_.FullName)"
} else {
Rename-Item -LiteralPath $_.FullName -NewName $fixed
}
}
}
Was das Skript tut:
- Die am tiefsten liegenden Einträge werden zuerst umbenannt, damit Ordner-Umbenennungen die Pfade der darin liegenden Dateien nicht ungültig machen.
- Existiert bereits eine korrekt benannte Datei (die Situation mit den zwei
Jörg.jpg), wird übersprungen statt überschrieben, und Sie sehen, welche Dateien Sie von Hand zusammenführen müssen. -LiteralPathist wichtig; ohne diesen Parameter können eckige Klammern im Dateinamen als Platzhalter missverstanden werden.
Variante B: das ZIP selbst vor dem Entpacken reparieren
Wenn Sie lieber keine Skripte ausführen oder ein sauberes Archiv an jemand anderen weitergeben müssen, nimmt das ZIP-Reparaturwerkzeug von FilenameFixer das ursprüngliche Mac-ZIP (bis 200 MB) entgegen, schreibt die zerlegten Namen darin nach NFC um und gibt Ihnen ein korrigiertes Archiv zum Herunterladen. Die Verarbeitung findet in Ihrem Browser statt; das Archiv wird nicht auf einen Server hochgeladen, was zählt, wenn das ZIP Kundenverträge oder Personalakten enthält. Das Werkzeug ist kostenlos, und dieselbe Web-App verarbeitet per Drag-and-drop auch einzelne Dateien, falls Sie den Ordner bereits entpackt haben.
Beide Wege führen zum gleichen Ergebnis: Namen, die Windows-Suche, Skripte und Webformulare als gewöhnliches ü, ö, ä, é und so weiter behandeln. Die Umwandlung beschränkt sich nicht auf lateinische Umlaute und Akzente; dieselbe Konvertierung repariert auch koreanische Namen, die in einzelne Buchstaben zerfallen ankommen, und japanische Kana mit abgetrenntem Dakuten, was Ihnen bei Archiven von koreanischen oder japanischen Kolleginnen und Kollegen begegnen kann.
Dem Problem beim nächsten Archiv vorbeugen
Das meiste lässt sich an der Quelle verhindern, aber nicht alles.
- Bitten Sie den Absender, im Finder mit Komprimieren oder im Terminal mit
zip -rzu packen. Beide schreiben UTF-8-Namen, was auf aktuellen Windows-Versionen das Risiko von Zeichensalat beseitigt. Keines von beiden normalisiert nach NFC, das zweite Problem kann also weiterhin auftreten. - Vermeiden Sie Umlaute in Dateinamen, die Plattformen wechseln, wo das vertretbar ist.
mueller_vertrag.pdfübersteht alles. Das ist eine Umgehung, keine Lösung, und keine Option, wenn die Umlaute Teil von Personennamen oder amtlichen Dokumenttiteln sind. - Namen beim Hochladen korrigieren, wenn Ihr eigentliches Problem ein Webportal ist, das Mac-Dateien ablehnt. Die FilenameFixer-Erweiterung für Chrome wandelt Dateinamen beim Hochladen auf Webseiten automatisch nach NFC um, sodass das Portal
Müllerals ein Zeichen erhält. - Für Entwickler: Normalisieren Sie Dateinamen serverseitig nach NFC, wenn Sie Uploads entgegennehmen, und in Build- oder Sync-Skripten, die Pfade zwischen macOS- und Windows-Checkouts vergleichen. Pythons
unicodedata.normalize("NFC", name)undString.Normalize()in .NET sind die üblichen Werkzeuge. Git kennt dafür die Optioncore.precomposeunicode, die dasselbe Problem in Repositories löst, die auf Macs geklont wurden.
Eine ehrliche Einschränkung: Wenn ein Windows-Nutzer Dateien mit zerlegten Namen schon monatelang umbenannt, bearbeitet und gespeichert hat, kann eine spätere Umwandlung mit korrekt benannten Kopien derselben Dokumente kollidieren. Das PowerShell-Skript oben und das ZIP-Werkzeug lassen die Originale in diesem Fall unangetastet, aber das Zusammenführen der beiden Versionen bleibt Handarbeit. Das Archiv gleich beim Entpacken abzufangen, wie hier beschrieben, ist deutlich weniger Aufwand, als es später zu entwirren.