Dlaczego ZIP z Maca ma w Windows zniekształcone nazwy plików? 3 rozwiązania

Autor: @SoNiceInfo · opublikowano 13.10.2026


Kompresujesz folder na Macu, wysyłasz go, a osoba korzystająca z Windows zamiast Résumé.pdf widzi nazwy w rodzaju R├⌐sum├⌐.pdf. Same pliki są w porządku; problem leży w tym, jak ZIP oznacza kodowanie znaków w nazwach plików. W tym poradniku na podstawie ZIP-ów, które naprawdę utworzyliśmy poleceniem „Kompresuj” w Finderze i poleceniem zip, wyjaśniamy, skąd bierze się ten problem, i pokazujemy trzy sposoby tworzenia na Macu ZIP-ów, które zachowują nazwy w Windows, a także sposób na pominięcie plików potrzebnych tylko na Macu, takich jak .DS_Store i __MACOSX.

Dlaczego nazwy są zniekształcone

Format ZIP nie narzuca kodowania znaków w nazwach plików. Zamiast tego nagłówek każdego pliku zawiera flagę UTF-8; jeśli jest ustawiona, nazwa jest zapisana w UTF-8. Jeśli flagi brak, system odbiorcy odczytuje nazwę po swojemu. Windows odczytuje nazwy bez flagi w swojej starszej stronie kodowej: CP437 w amerykańskiej wersji Windows, Shift_JIS (CP932) w japońskiej.

Mac zapisuje nazwy plików w UTF-8, ale nie ustawia flagi. Windows dekoduje więc bajty UTF-8 jako CP437 lub Shift_JIS, przez co Résumé.pdf zmienia się w R├⌐sum├⌐.pdf, a japońska nazwa, taka jak 見積書.pdf, w ciąg przypadkowych znaków.

Drugi problem dotyczy znaków diakrytycznych i japońskich znaków dźwięczności. Mac czasem zapisuje znak taki jak é jako dwa znaki: e oraz łączący akcent (ta postać nazywa się NFD). Jeśli trafi do ZIP-a w tej postaci, niektóre narzędzia w Windows pokazują akcent osobno. Połączenie ich w jeden znak (normalizacja NFC) zapobiega temu problemowi.

Co tworzą wbudowane narzędzia

W macOS 27 skompresowaliśmy folder zawierający pliki z japońskimi nazwami i plik .DS_Store, a następnie zbadaliśmy powstałe ZIP-y. Polecenie „Kompresuj” w Finderze odtworzyliśmy za pomocą ditto -c -k --sequesterRsrc --keepParent, które według strony podręcznika ditto tworzy archiwum podobne do tego z polecenia „Kompresuj” w Finderze.

MetodaFlaga UTF-8.DS_Store__MACOSX
„Kompresuj” w FinderzeNieustawionaDodawanyDodawany (gdy plik ma rozszerzone atrybuty)
Polecenie zip (zip -r)Nieustawiona (brak opcji, która by ją ustawiała)Dodawany (wyklucz opcją -x)Brak
zipfile w PythonieUstawionaDodawanyBrak
ZipScopeUstawiona (plus normalizacja NFC)BrakBrak

Polecenie zip dołączone do macOS jest skompilowane bez opcji ustawiającej flagę UTF-8 (-UN); próba jej użycia kończy się błędem. Innymi słowy, same wbudowane narzędzia nie pozwalają utworzyć ZIP-a, który zachowa w Windows poprawne nazwy spoza ASCII.

Folder __MACOSX pojawia się, gdy plik ma rozszerzone atrybuty, na przykład gdy został pobrany z internetu lub oznaczony tagiem w Finderze. Zawiera pliki o nazwach zaczynających się od ._.

PolecaneMetoda 1: kompresja w aplikacji (ZipScope)

ZipScope to aplikacja na Maca do pakowania i rozpakowywania archiwów, stworzona przez autora tego poradnika, która tworzy ZIP-y otwierające się u użytkowników Windows bez zniekształconych nazw. Ustawia flagę UTF-8 dla nazw plików spoza ASCII i normalizuje je do postaci NFC. Pliki .DS_Store, __MACOSX i ._ są domyślnie pomijane.

1

Skompresuj z menu kontekstowego

Zaznacz pliki lub foldery w Finderze, kliknij je prawym przyciskiem i wybierz „Compress with ZipScope”. Możesz też upuścić je na ikonę na pasku menu.

2

Sprawdź ustawienia

Pomijanie .DS_Store i normalizacja NFC są włączone od początku. Sprawdź nazwę pliku i miejsce docelowe.

3

Kliknij „Create”

Powstanie ZIP, który zachowa nazwy w Windows, i zostanie pokazany w Finderze.

Okno tworzenia ZIP-a w ZipScope z domyślnie włączonymi opcjami dla Windows

Tworzenie ZIP-ów bez hasła jest bezpłatne. Tworzenie archiwów ZIP i 7z chronionych hasłem jest częścią wersji Pro (jednorazowy zakup w aplikacji). ZipScope nigdy nie korzysta z sieci, więc Twoje pliki nigdy nie opuszczają Maca.

Zobacz ZipScope →

macOS 14 lub nowszy · Apple Silicon i Intel

Dla użytkowników terminalaMetoda 2: kompresja modułem zipfile w Pythonie

Wbudowany moduł zipfile w Pythonie ustawia flagę UTF-8 dla nazw plików spoza ASCII. W Terminalu przejdź do folderu, w którym znajduje się to, co chcesz skompresować, i wykonaj:

cd ~/Desktop
python3 -m zipfile -c Documents.zip Documents/

Przy pierwszym uruchomieniu python3 macOS może poprosić o zainstalowanie narzędzi programistycznych wiersza poleceń. Ta metoda ma kilka ograniczeń:

  • Pliki .DS_Store są dołączane (nie ma opcji, która by je wykluczała).
  • Nazwy nie są normalizowane do NFC, więc nazwy w postaci rozłożonej (NFD) trafiają do archiwum bez zmian.
  • Za każdym razem trzeba otwierać Terminal.

Aby pominąć .DS_Store, najpierw usuń te pliki z folderu źródłowego (to jedynie przywraca domyślne ustawienia widoku tego folderu w Finderze).

find Documents -name .DS_Store -delete

Bez instalacjiMetoda 3: najpierw zmień nazwy plików na ASCII

Jeśli nazwy wszystkich plików i folderów zawierają tylko zwykłe litery i cyfry ASCII (na przykład bez polskich znaków), nada się każde narzędzie, a problem kodowania w ogóle nie wystąpi. To niezawodny sposób, ale zmiana nazw wielu plików zajmuje czas, a nazwy mogą być mniej zrozumiałe dla odbiorcy.

„Kompresuj” w Finderze i tak dodaje .DS_Store i __MACOSX, więc jeśli ma to dla ciebie znaczenie, użyj polecenia zip i wyklucz .DS_Store:

cd ~/Desktop
zip -r Documents.zip Documents -x "*.DS_Store"

-x "*.DS_Store" pomija pliki .DS_Store. Polecenie zip nie tworzy folderu __MACOSX.

Pomijanie .DS_Store i __MACOSX

.DS_Store to plik, w którym Finder zapisuje ustawienia widoku folderu. __MACOSX to folder, który polecenie „Kompresuj” w Finderze tworzy, aby zachować rozszerzone atrybuty. Oba są na Macu ukryte, ale w Windows widać je jako zwykłe pliki, dlatego odbiorcy pytają o dziwne dodatkowe pliki.

  • „Kompresuj” w Finderze ─ brak ustawienia, które pozwalałoby je pominąć.
  • Polecenie zip ─ -x "*.DS_Store" wyklucza .DS_Store. Folder __MACOSX nie powstaje.
  • ZipScope ─ domyślnie pomija pliki .DS_Store, __MACOSX i ._. Pomija je też przy rozpakowywaniu ZIP-ów utworzonych na Macu (można to zmienić w ustawieniach, „Settings”).

Gdy ZIP-y z Windows mają na Macu zniekształcone nazwy

Problem występuje też w drugą stronę. Windows zapisuje nazwy plików w ZIP-ie w starszej stronie kodowej bez flagi UTF-8, więc ZIP z japońskiego Windows przechowuje nazwy w Shift_JIS. W macOS 27 rozpakowaliśmy taki ZIP wbudowanym narzędziem (ditto). Gdy Mac był ustawiony na język japoński, nazwy były poprawne; przy angielskim kodowaniu systemu pojawiły się jako å©êœèë, a polecenie unzip zatrzymało się z błędem. To, czy wbudowane narzędzie poradzi sobie poprawnie, zależy więc od języka Twojego Maca.

ZipScope automatycznie wykrywa nazwy w Shift_JIS (CP932) niezależnie od języka Maca i wyświetla je poprawnie po japońsku. Jeśli wykrywanie zawiedzie, przełącz ręcznie między CP932, UTF-8, EUC-JP, GBK, EUC-KR i CP437. W przypadku ZIP-ów z hasłem zapisanym po japońsku aplikacja próbuje zarówno UTF-8, jak i CP932.

Lista plików ze zniekształconymi nazwami odczytanymi w niewłaściwym kodowaniu
Ta sama lista plików z poprawnymi japońskimi nazwami po automatycznym wykryciu kodowania w ZipScope

Którą metodę wybrać

  • W pracy wymieniasz ZIP-y z użytkownikami Windows ─ ZipScope. Jedno kliknięcie prawym przyciskiem daje ZIP-y bez zniekształconych nazw i bez .DS_Store, a aplikacja radzi sobie też ze zniekształconymi ZIP-ami z Windows.
  • Wysyłasz ZIP-y od czasu do czasu i nie przeszkadza Ci Terminal ─ zipfile w Pythonie. Najpierw usuń .DS_Store.
  • Plików jest niewiele, a zmiana ich nazw nie stanowi problemu ─ zmiana nazw na ASCII.

Często zadawane pytania

Q. Czym jest flaga UTF-8 w pliku ZIP?

To znacznik w nagłówku każdego pliku, który mówi: „ta nazwa pliku jest zapisana w UTF-8”. Specyfikacja ZIP nazywa go bitem 11 pola general purpose flag, znanym też jako Language encoding flag (EFS). Gdy flaga jest ustawiona, Windows odczytuje nazwę jako UTF-8. Gdy jej brak, Windows odczytuje nazwę w starszej stronie kodowej (CP437 w amerykańskiej wersji Windows, Shift_JIS w japońskiej), więc nazwy z Maca są zniekształcone.

Q. Wysłany ZIP przygotowany pod Windows nadal ma u odbiorcy zniekształcone nazwy.

Odbiorca może używać starego programu do rozpakowywania, który ignoruje flagę UTF-8. Nowsze wersje Windows poprawnie odczytują ZIP-y z flagą UTF-8 wbudowanym narzędziem (Eksploratorem plików), więc poproś o otwarcie archiwum właśnie w nim albo zmień nazwy plików na zwykłe ASCII i spakuj je ponownie.

Q. Czy odbiorca może naprawić nazwy w Windows?

Program do rozpakowywania, który potrafi ponownie odczytać nazwy jako UTF-8, może wyświetlić je poprawnie. Mimo to utworzenie ZIP-a z flagą UTF-8 po Twojej stronie jest pewniejsze i oszczędza odbiorcy kłopotu.

Q. Czy usuwanie plików .DS_Store jest bezpieczne?

.DS_Store to plik, w którym Finder przechowuje ustawienia widoku folderu (położenie ikon, tryb widoku itp.). Jego usunięcie nie wpływa na dokumenty, a Finder w razie potrzeby utworzy go ponownie. Nie musisz go usuwać tylko po to, by nie trafił do ZIP-a; zobacz Pomijanie .DS_Store i __MACOSX.

Q. Czy ZIP chroniony hasłem również może zachować w Windows poprawne nazwy plików?

Tak. ZipScope Pro (jednorazowy zakup) tworzy ZIP-y chronione hasłem, które mają flagę UTF-8 i otwierają się wbudowanym narzędziem Windows. Polecenie zip potrafi dodać hasło, ale nie ustawi flagi UTF-8. Zobacz Jak utworzyć ZIP z hasłem na Macu.

Podsumowanie

ZIP-y utworzone na Macu mają w Windows zniekształcone nazwy, bo Mac zapisuje nazwy w UTF-8 bez flagi, która by o tym informowała. „Kompresuj” w Finderze i polecenie zip nie potrafią ustawić tej flagi, więc aby zachować nazwy spoza ASCII, użyj aplikacji ustawiającej flagę UTF-8, takiej jak ZipScope, albo modułu zipfile w Pythonie. Pominięcie .DS_Store i __MACOSX także oszczędzi odbiorcy niepotrzebnych wątpliwości.