Punycode
Punycode je v informatice název pro kódovací syntaxi, která umožňuje překlad řetězce znaků kódovaných prostřednictvím Unicode do jednoduché ASCII podoby, používané např. pro pojmenování síťových zařízení nebo internalizovaných internetových domén, jako jsou háčkyčárky.cz, lepší.tv, nebo i❤️.ws.
Kódovací princip
V této sekci je popsán postup Punycode kódování – ukazuje názorně převod řetězce „počítač“ do kódované podoby „pota-wpa5qd“.
Oddělení ASCII znaků
Nejprve jsou všechny základní (ASCII) znaky v řetězci odděleny od ostatních znaků (např. „počítač“ → „pota“). Pokud byl oddělen alespoň jeden ASCII znak přidá se na konec řetězce znak „-“ (např. „počítač“ → „pota-“).
Kódování ostatních znaků
Dále následuje kódování ostatních ne-ASCII znaků. Použitým algoritmem se kóduje nejen samotný znak, ale i jeho původní pozice v Unicode tvaru. Například řetězec „počítač“ je převeden do podoby „pota-wpa5qd“. Právě text za znakem „-“, tedy „wpa5qd“, v sobě nese zakódovanou informaci o ne-ASCII znacích (č, í a č) a jejich původním umístění v řetězci na 3., 4., resp. 7. místě zleva.
Pro použití v názvech domén IDN se ještě na začátek přidá konstantní „ACE prefix“ („xn--“). Zakódována doména např. „www.počítač.cz“ je tedy „www.xn--pota-wpa5qd.cz“.