Jak działa kodowanie URL
W adresach stron dozwolonych jest niewiele znaków: litery bez ogonków, cyfry i kilka symboli. Wszystko inne jest kodowane. W UTF-8 litera ą składa się z bajtów C4 i 85, dlatego staje się %C4%85. Spacja to %20, a w formularzach +.
Zakodowany
Pi%C4%85tek w %C5%81odzi
Zdekodowany
Piątek w Łodzi
Najczęstsze kody URL
%C4%85= ą,%C4%87= ć,%C4%99= ę,%C5%82= ł,%C5%84= ń%C3%B3= ó,%C5%9B= ś,%C5%BA= ź,%C5%BC= ż%C5%81= Ł,%C5%9A= Ś,%C5%BB= Ż,%E2%82%AC= €,%E2%80%9E= „%20= spacja,%2F= /,%3F= ?,%26= &,%25= %
Każda polska litera zajmuje w UTF-8 dwa bajty, więc w linku zamienia się w sześć znaków. Prawie wszystkie zaczynają się od %C4 lub %C5 – tylko ó to %C3%B3. Po tym łatwo rozpoznać zakodowany polski tekst. Starsze systemy kodują literę jednym bajtem z Windows-1250: Pi%B9tek zamiast Pi%C4%85tek. Mojibuster rozpoznaje też to i zamienia na Piątek.
Skąd bierze się tekst zakodowany w URL
- Skopiowane linki: przeglądarka pokazuje
wikipedia.org/wiki/Łódźczytelnie, ale po skopiowaniu w schowku często ląduje%C5%81%C3%B3d%C5%BA. - Formularze i śledzenie: wyszukiwane hasła i parametry UTM trafiają zakodowane do logów serwera i eksportów z analityki, np.
?q=p%C4%85czki. - Eksporty i API: niektóre narzędzia do newsletterów, webhooki i API zapisują wartości zakodowane; w pliku CSV w Excelu widać wtedy kody zamiast nazwisk.
- Nazwy plików: pobrany plik nazywa się
Faktura%20Ma%C5%82gorzata.pdf, gdy serwer nie zdekoduje nazwy.
Kody i krzaki jednocześnie
Czasem tekst jest zepsuty dwa razy: %C3%84%E2%80%A6 to zakodowane w URL Ä…, czyli ą, które najpierw zostało źle odczytane jako Windows-1250, a potem zakodowane. Mojibuster najpierw dekoduje kody, a potem naprawia krzaki – więcej na stronie Windows-1250 na UTF-8. Na końcu znów widać ą.
Opcja Zamień też kody jest na tej stronie już włączona. Zamienia też kody HTML (ą), kody z e-maili (=C4=85) i sekwencje ucieczki z kodu programów (\u0105). Inne przyczyny krzaków: co to jest mojibake.
Dekodowanie samodzielnie w Excelu, JavaScripcie, Pythonie i PHP
- Excel: ma tylko funkcję do kodowania (
ENCODEURLw wersji angielskiej), nie do dekodowania. Najprościej: skopiuj kolumnę, wklej ją tutaj i skopiuj wynik z powrotem. - JavaScript:
decodeURIComponent("p%C4%85czki")zwracapączki. - Python:
urllib.parse.unquote("p%C4%85czki")albounquote_plusdla danych z formularzy z+zamiast spacji. - PHP:
rawurldecode()albourldecode()dla danych z formularzy.
Najczęstsze pytania
Co oznacza %C4%85?
To litera ą w kodowaniu URL: dwa bajty UTF-8 C4 i 85, każdy poprzedzony znakiem %. Tak samo %C5%82 to ł, a %C5%BC to ż.
Co oznacza %20?
Spację. W danych z formularzy często zamiast niej jest +. Mojibuster zostawia + bez zmian, bo w zwykłym tekście może to być prawdziwy plus.
Czy moje linki są gdzieś wysyłane?
Nie. Zamiana odbywa się w całości w przeglądarce. Linki z tokenami, adresami e-mail czy innymi danymi osobowymi nie opuszczają Twojego urządzenia.
Dlaczego 100% się nie zmienia?
Mojibuster zamienia tylko ciągi, z których powstaje prawdziwy znak specjalny. 100%, 50 % albo pojedyncze %20 w zwykłym tekście zostają bez zmian.