Kodowanie

Punycode encode/decode

Kodowanie nazw domen ze znakami Unicode (IDN) do formatu Punycode zgodnego z ASCII (xn--) i z powrotem.

The DNS system historically only supports ASCII characters, so domain names with Cyrillic, CJK, or other non-ASCII characters (IDN) are encoded as Punycode — an ASCII-compatible form prefixed with xn--. This tool encodes and decodes such domains.

How to use it

Common uses

Things to keep in mind

Visually similar characters from different scripts (like Cyrillic "а" and Latin "a") can form a domain that looks identical to a known brand — this is the basis of homograph phishing.

Not every browser shows decoded Unicode the same way: when a domain label mixes scripts, browsers often deliberately show the raw xn-- form as a warning sign.

Artykuł o tym narzędziu: Punycode: jak umiędzynarodowione domeny działają w DNS

Najczęstsze pytania

Czym jest Punycode i skąd bierze się prefiks xn--?

Punycode to sposób zapisu nazw domen zawierających znaki Unicode (IDN) za pomocą wyłącznie znaków ASCII, wymaganych przez system DNS. Zakodowana etykieta domeny zawsze zaczyna się od prefiksu xn--, po którym następuje zakodowana część oryginalnej nazwy.

Dlaczego domeny IDN bywają ryzykowne?

Różne alfabety zawierają znaki wyglądające niemal identycznie jak litery łacińskie (np. cyrylickie а zamiast łacińskiego a), co pozwala rejestrować domeny łudząco podobne do znanych marek — to tzw. atak homograficzny (spoofing) wykorzystywany w phishingu.

Czy wpisana domena jest gdzieś wysyłana podczas konwersji?

Nie, kodowanie i dekodowanie Punycode odbywa się w całości lokalnie w przeglądarce, bez żadnych zapytań do serwera czy DNS.

Jak rozpoznać, że link wykorzystuje Punycode?

Zakodowana domena zawsze ma prefiks xn-- przed każdą etykietą zawierającą znaki spoza ASCII. Jeśli w pasku adresu lub e-mailu widzisz domenę zaczynającą się od xn--, to oznaka IDN — warto sprawdzić, jaki tekst kryje się za kodowaniem.

Czy wszystkie przeglądarki pokazują cyrylicę w pasku adresu tak samo?

Nie. Niektóre przeglądarki wyświetlają zdekodowany Unicode tylko wtedy, gdy wszystkie znaki domeny należą do jednego alfabetu, a przy mieszaniu alfabetów (oznaka ataku homograficznego) celowo pokazują surowy zapis xn-- zamiast oryginalnych znaków.

Artykuły: Kodowanie

Base64: po co jest kodowanie i jak działa

Jak Base64 zamienia dane binarne na tekst ASCII i kiedy naprawdę jest to potrzebne.

Base32: czym różni się od Base64 i kiedy jest wygodniejszy

Alfabet Base32 niewrażliwy na wielkość liter i sytuacje, w których jest wygodniejszy od Base64.

URL Encode/Decode: percent-encoding w linkach

Jak znaki specjalne w adresach i parametrach zamieniają się w sekwencje %XX.

HTML Entities: jak bezpiecznie wyświetlać znaki specjalne

Dlaczego znaki < > & trzeba escapować i jak to zapobiega uszkodzeniu znaczników.

JWT: budowa tokenu i co znaczy „dekodowanie" JWT

Header, payload i signature tokenu JWT oraz dlaczego dekodowanie to nie to samo co weryfikacja podpisu.

Unicode Escape: co oznaczają sekwencje \uXXXX

Skąd biorą się sekwencje takie jak \u0041 w JSON i ciągach JS oraz co oznaczają.

ROT13 i szyfr Cezara: proste podstawianie znaków

Dlaczego przesunięcie o 13 liter sprawia, że ROT13 jest samoodwrotny, i po co się go dziś używa.

Alfabet Morse'a: jak tekst zamienia się w kropki i kreski

Zasada kodowania liter jako kropek i kresek oraz gdzie alfabet Morse'a jest dziś stosowany.

Data URI: kiedy osadzać obrazy bezpośrednio w kodzie

Jak Data URI osadza zawartość pliku bezpośrednio w HTML lub CSS i kiedy się to opłaca.

Gzip + Base64: kompresja danych do przesyłania jako tekst

Dlaczego skompresowane dane binarne dodatkowo koduje się w Base64, zanim trafią do pola tekstowego.

XML Entities: escapowanie znaków w dokumentach XML

Pięć obowiązkowych encji XML, bez których dokument psuje się podczas parsowania.