Przejdź do treści
HNarzędzia
pl
Kategorie

Tekst i pisanie

Polskie znaki w nazwach plików i adresach stron: kiedy przeszkadzają i jak je usunąć

Nazwa pliku z „ł” czy „ą” zwykle działa. Kłopot zaczyna się dopiero wtedy, gdy plik przechodzi między systemami, archiwami, formularzami i adresami URL. Sprawdź, w którym z tych miejsc ogonki mogą Ci przeszkadzać, i usuń je z całej listy nazw naraz.

Polskie litery w nazwach plików w nowoczesnych systemach zwykle działają bez zastrzeżeń. Problem pojawia się na styku: archiwum ZIP otwarte starszym programem, plik przeniesiony z Maca, formularz z polem tylko na znaki ASCII, adres strony wklejony do komunikatora. W każdym z tych miejsc zawodzi inny mechanizm, więc najpierw ustal, który Cię dotyczy. Jeśli nic z poniższej tabeli nie występuje w Twoim obiegu plików, ogonków możesz nie ruszać.

Gdzie ogonki psują się naprawdę

Sytuacja Co się dzieje Co robi różnicę
Archiwum ZIP rozpakowane starszym programem Nazwy pokazują się jako przypadkowe znaki Kodowanie nazw zapisane w archiwum
Plik z Maca otwarty lub porównywany gdzie indziej Ta sama nazwa ma dwa różne zapisy (NFC i NFD) Normalizacja Unicode
Formularz, system księgowy lub bankowy z polem na ASCII Odrzucony plik albo zniekształcona nazwa Zależy od konkretnego systemu
Adres strony Zamiast „ł” w linku widać %C5%82 Kodowanie procentowe (UTF-8)

ZIP i kodowanie nazw

Specyfikacja formatu ZIP (APPNOTE 6.3.10 firmy PKWARE, dodatek D, sprawdzona w październiku 2026) mówi, że historycznie nazwy plików w ZIP-ie zapisywano w kodowaniu IBM Code Page 437. Nazwę w UTF-8 oznacza dopiero bit 11 flagi (EFS). Gdy archiwum nie ma tej flagi, nazwa powinna mieścić się w kodowaniu 437, które nie obejmuje polskich liter, a programy radzą sobie z tym różnie. Dlatego nazwa z „ł” zapisana przez jeden program może zamienić się w krzaczki w innym. Archiwum z samymi znakami ASCII w nazwach tego ryzyka nie ma.

Normalizacja NFC i NFD na Macu

Ta sama litera w Unicode ma czasem dwa zapisy. „ą” może być jednym znakiem (U+0105, forma NFC) albo literą „a” z doklejonym ogonkiem (U+0061 i U+0328, forma NFD). Opisuje to raport Unicode UAX #15. Na Macu ma to znaczenie z powodu historii systemu plików. Apple w dokumentacji HFS Plus (TN1150) pisze, że HFS Plus zapisuje nazwy w pełni rozłożone (decomposed) i podaje „é” rozkładane na „e” i U+0301. Dokumentacja APFS, obecnego systemu plików Apple, opisuje nazwy jako niezależne od normalizacji: do porównania nazwę rozkłada się do NFD. Sprawdziliśmy to na APFS w naszym Macu: plik zapisany pod nazwą „zażółć.txt” w formie NFC wrócił z katalogu w tej samej formie, a odszukanie go nazwą w NFD też się udało. W obrębie jednego Maca nic się więc nie psuje. Różnica pojawia się, gdy nazwa trafia do programu lub systemu, który porównuje ciągi znaków bez normalizacji.

W Node.js widać, co to oznacza dla polskich liter:

'ą'.normalize('NFD').length; // 2 (a + U+0328)
'ł'.normalize('NFD').length; // 1 (U+0142, bez zmian)
'zażółć'.normalize('NFC') === 'zażółć'.normalize('NFD'); // false
'zażółć'.normalize('NFC').length; // 6
'zażółć'.normalize('NFD').length; // 9

Dwie nazwy, które wyglądają tak samo, mogą być różnymi ciągami znaków. Przez to program, który porównuje znaki bez normalizacji, może nie znaleźć pliku, którego nazwa jest zapisana w drugiej formie. Litera „ł” (U+0142) nie ma rozkładu, więc w obu formach wygląda tak samo. Dotyczy to też „ø”.

Formularze i starsze systemy

Niektóre formularze, systemy księgowe i bankowe przyjmują w polach tylko znaki ASCII albo zniekształcają pozostałe. Nie ma na to jednej reguły ani wspólnego źródła, bo zależy to od konkretnego systemu. Jeśli formularz odrzuca plik bez wyjaśnienia, a nazwa ma ogonki, usunięcie ich jest najtańszą próbą.

Adresy URL: %C5%82 i co na to Google

Adres może zawierać tylko część znaków bezpośrednio. Reszta jest kodowana procentowo: znak zamienia się na bajty UTF-8 zapisane jako % i dwie cyfry szesnastkowe. W JavaScript robi to encodeURIComponent (MDN). Wynik policzony w Node:

encodeURIComponent('zażółć gęślą jaźń');
// "za%C5%BC%C3%B3%C5%82%C4%87%20g%C4%99%C5%9Bl%C4%85%20ja%C5%BA%C5%84"

encodeURIComponent('ł'); // "%C5%82"
encodeURIComponent('ą'); // "%C4%85"
encodeURIComponent('ą'.normalize('NFD')); // "a%CC%A8"

`https://example.com/pliki/${encodeURIComponent('Łódź plan.pdf')}`;
// "https://example.com/pliki/%C5%81%C3%B3d%C5%BA%20plan.pdf"

Dwa wyrażenia z „ą” pokazują skutek NFC i NFD w adresie: w formie NFC to %C4%85, a w NFD a%CC%A8, czyli dwa różne adresy dla tej samej nazwy. Zakodowany adres jest poprawny, ale trudny do odczytania w wiadomości: każda polska litera zajmuje w nim sześć znaków zamiast jednego.

Czy Google wymaga ASCII w adresach? Nie. Poradnik Google Search Central o strukturze adresów URL (ostatnia aktualizacja strony: 10 grudnia 2025, sprawdzona w październiku 2026) zaleca słowa w języku odbiorców, a jako przykład podaje niemiecki adres gemüse. Przy linkowaniu do własnych stron radzi stosować kodowanie procentowe w atrybucie href, na przykład gem%C3%BCse. Dokument zaleca też myślniki zamiast podkreślników i przypomina, że wyszukiwarka rozróżnia wielkość liter w adresach, więc spójne małe litery są bezpieczniejsze. Z tej strony nie wynika, że ogonki szkodzą pozycji. Adres bez ogonków wybierasz dla czytelności i wygody kopiowania, nie z wymogu wyszukiwarki. Jeśli masz już działające adresy z polskimi literami, nie zmieniaj ich bez przekierowań.

Jak usunąć ogonki: dwa narzędzia, dwa zadania

Usuwanie polskich znaków służy do nazw plików i zwykłego tekstu. Generator slugów tworzy fragment adresu URL. Obydwa działają w przeglądarce, a wklejony tekst nie trafia na serwer.

Usuwanie polskich znaków zamienia każdą z 18 liter ze znakami diakrytycznymi (małe i wielkie ą, ć, ę, ł, ń, ó, ś, ź, ż) z tabeli w kodzie: ą na a, ć na c, ł na l, ż na z. Litera „ł” ma osobny wpis w tej tabeli, bo sama normalizacja Unicode jej nie ruszy. Sprawdziliśmy w Node: rozkład do NFD i usunięcie znaków łączących zamienia „zażółć gęślą jaźń” na „zazołc gesla jazn”, z „ł” na miejscu. Narzędzie daje „zazolc gesla jazn”.

Ustawienie „Usuń także inne znaki diakrytyczne (é, ü, ß, ø, č…)” decyduje o zakresie. W polskiej wersji narzędzia jest domyślnie wyłączone: zmieniane są tylko polskie litery, a „ü” czy „é” zostają. Po włączeniu narzędzie usuwa też pozostałe akcenty (é na e, ü na u) i zamienia ß na ss oraz ø na o. Spacje, cyfry, znaki interpunkcyjne, wielkość liter i rozszerzenie pliku zostają. Pod wynikiem widać liczbę zamienionych znaków. Narzędzie radzi sobie też z nazwami rozłożonymi (NFD), jakie zapisuje HFS Plus: nazwę Zażółć gęślą jaźń.txt w formie NFD (29 znaków) wklejoną w trybie „tylko polskie litery” zamieniło na Zazolc gesla jazn.txt.

Generator slugów robi więcej, bo zakłada adres internetowy. Domyślnie tworzy wszystkie litery małe, rozdziela słowa myślnikami i usuwa wszystko, co nie jest literą ani cyfrą. Znak & zamienia na „i” w polskiej wersji narzędzia (w angielskiej na „and”). Apostrof i cudzysłów znikają bez śladu. Ustawienia: separator (myślnik, podkreślnik lub kropka), małe litery, usuwanie słów funkcyjnych (polskich i angielskich: i, w, z, na, the, of…) oraz maksymalna długość. Pole „Każda linia osobno” zamienia listę tytułów na listę slugów.

Przykład: osiem nazw plików przez oba narzędzia

Lista składa się z fikcyjnych nazw wygenerowanych skryptem. Jest w niej polski tekst, nazwy z innych języków i jedna nazwa bez znaków specjalnych jako kontrola. Poniższe wyniki odczytaliśmy z narzędzi w przeglądarce (Chromium sterowany Playwrightem).

Nazwa pliku Tylko polskie litery (domyślnie w PL) Wszystkie akcenty Slug
Zażółć gęślą jaźń.txt Zazolc gesla jazn.txt Zazolc gesla jazn.txt zazolc-gesla-jazn-txt
Łódź Śródmieście plan.pdf Lodz Srodmiescie plan.pdf Lodz Srodmiescie plan.pdf lodz-srodmiescie-plan-pdf
Faktura nr 10-2026 Wałęsa & Synowie.pdf Faktura nr 10-2026 Walesa & Synowie.pdf Faktura nr 10-2026 Walesa & Synowie.pdf faktura-nr-10-2026-walesa-i-synowie-pdf
Müller Straße Øresund.docx bez zmian Muller Strasse Oresund.docx muller-strasse-oresund-docx
Crème brûlée São Paulo.jpg bez zmian Creme brulee Sao Paulo.jpg creme-brulee-sao-paulo-jpg
Čapek Český Krumlov.png bez zmian Capek Cesky Krumlov.png capek-cesky-krumlov-png
ŁÓDŹ ŻÓŁW.TXT LODZ ZOLW.TXT LODZ ZOLW.TXT lodz-zolw-txt
raport_roczny.v2.pdf bez zmian bez zmian raport-roczny-v2-pdf

Licznik pod wynikiem pokazał 23 zamienione znaki w trybie „tylko polskie litery” i 33 po włączeniu pozostałych akcentów. Całą listę wklejamy do pola po lewej, a wynik kopiujemy z prawego.

Narzędzie Usuwanie polskich znaków z listą ośmiu nazw plików: po prawej wersja bez polskich liter, niżej przełącznik wyłączony i licznik „Zamienione znaki: 23”

Z tabeli wynikają trzy rzeczy.

Slug nie nadaje się do nazw plików. Zamienia kropkę przed rozszerzeniem na myślnik, więc plan.pdf staje się plan-pdf, a raport_roczny.v2.pdf traci i rozszerzenie, i kropkę oraz podkreślnik. Do nazw plików użyj usuwania znaków. Slug jest do fragmentu adresu, gdzie rozszerzenia zwykle nie ma.

Dwie różne nazwy mogą po usunięciu ogonków dać tę samą. Łódź.pdf i Lodz.pdf w jednym folderze zlewają się w jedną nazwę, a system albo zapyta o nadpisanie, albo doda numer. Przy większej liście sprawdź wynik pod kątem powtórzeń, zanim zmienisz nazwy.

Zamiana liter jest uproszczeniem. „ß” dostaje ss, ale w niemieckich nazwiskach często pisze się „ü” jako „ue”, a tego narzędzie nie robi (z „Müller” zostaje „Muller”).

Slug i jego długość

Generator pokazuje długość sluga w znakach i podgląd adresu. Dla tytułu „Raport kwartalny: sprzedaż w województwie łódzkim i śląskim, wnioski dla zarządu” slug ma 78 znaków. Z maksymalną długością 40 narzędzie tnie go na granicy słowa: raport-kwartalny-sprzedaz-w-wojewodztwie. Wiszące „w” na końcu psuje wynik. Po włączeniu usuwania słów funkcyjnych slug wygląda lepiej: raport-kwartalny-sprzedaz-wojewodztwie (38 znaków). Narzędzie nie wybiera za Ciebie, co jest ważne w tytule, więc przeczytaj wynik przed publikacją.

Generator slugów w trybie „Każda linia osobno”: osiem nazw plików z listy zamienionych na slugi małymi literami z myślnikami

Kiedy usuwać, a kiedy zostawić

Usuń ogonki, gdy plik trafia do systemu z ASCII, do archiwum, które ktoś otworzy na nieznanym programie, albo gdy chcesz mieć link, który da się odczytać w całości. Zostaw je, gdy nazwa ma być czytelna dla odbiorcy po polsku (dokument dla klienta) i obieg pliku nie przechodzi przez żadne z miejsc z pierwszej tabeli. W adresach stron Google nie wymaga ASCII, więc to Twoja decyzja redakcyjna.