Punycode (doslovně „puny code“) je syntaxe kódování definovaná v RFC 3492 a určená k použití ve spojení s mezinárodními názvy domén v podpůrných aplikacích.
V RFC 3492 definuje algoritmus volal Bootstring pro znázornění řetězec odebrán rozšířené znakové sady řetězem vytáhl základní sadu znaků (často velmi malá část ASCII). Bootstring je podle definice:
Punycode je konkrétní aplikace bootstringového algoritmu věnovaná internacionalizovanému názvu domény , kde je základní sada velmi omezená (omezena pouze na 26 písmen základní latinky bez rozlišení velkých písmen a na 10 desetinných míst a pouze znaménko minus). Umožňuje však reprezentovat jakýkoli text Unicode, ačkoli Punycode se obecně používá pro kódování internacionalizovaných štítků v doménových jménech, kde jsou aplikována další omezení (kromě omezení délky) (zejména je povoleno filtrování znaků a transformace určitých znaky nebo určité sekvence do standardizované podoby před jejich konečným znázorněním pomocí Punycode ).
Punycode transformuje řetězec Unicode na řetězec ASCII jedinečným a reverzibilním způsobem. Znaky ASCII v řetězci Unicode jsou reprezentovány doslovně a znaky jiné než ASCII jsou reprezentovány znaky ASCII, které jsou všechny povoleny v popiscích názvů hostitelů (písmena, číslice a spojovníky).
Například z bücheru se stane bcher-kva s Punycode . Dále je název domény bücher.ch reprezentován xn--bcher-kva.chv IDNA (standard umožňující použití internacionalizovaných znaků v aplikacích).
V xn - bcher-kva je punycode částí bcher-kva , napravo od předpony označující mezinárodní název xn-- . Celý řetězec je ASCII kompatibilní kódování .