Punycode (vyslov [ˈpjuːniˌkəʊd] ) je standardizovaná metoda pro převod sekvencí znaků Unicode do tzv. ACE sekvencí ( angl. ASCII Compatible Encoding - ASCII compatible encoding [1] ), které se skládají pouze z alfanumerických znaků, jako je povoleno v doméně jména.
Punycode byl navržen tak, aby jednoznačně převáděl názvy domén na sekvenci znaků ASCII . Používá většina prohlížečů [2] . Existují také speciální programy nebo služby zvané konvertory Punycode , které umožňují kódovat / dekódovat sekvenci znaků Unicode v ACE a naopak.
Nejdůležitějším důvodem pro zavedení Punycode byl fakt, že v normou schváleném systému doménových jmen je povoleno pouze 26 znaků latinské abecedy, čísla od 0 do 9 a pomlčka . Pro angličtinu a některé další jazyky založené na latinské abecedě to stačí, ale jiné jazyky mohou obsahovat další znaky, například ä, önebo ü.
Základními znaky jsou znaky latinské abecedy a - z (bez rozlišení velkých a malých písmen), číslice od 0 do 9 a pomlčka "-"; pouze 37 znaků. Transformační algoritmus se skládá ze dvou fází. V první fázi jsou všechny znaky obsažené v hlavním ASCII kódování (kódy 0-127) vybrány ze zdrojového textu a přeneseny v řadě do zakódovaného slova. Pokud se poté v textu vyskytnou znaky jiné než ASCII, přidá se ke kódovanému slovu pomlčka a převod se řídí postupem popsaným v RFC 3492 [3] .
Posloupnost znaků | Kódování |
---|---|
a B c d e f | a B c d e f |
abecdöef | abcdef-qua4k |
schon | schn-7qa |
ยจฆฟคฏข | 22cdfh1b8fsa |
☺ | 74h |
pravda | 80aafi6cg |