Punycode (pronunțat [ˈpjuːniˌkəʊd] ) este o metodă standardizată de conversie a secvențelor de caractere Unicode în așa-numitele secvențe ACE ( eng. ASCII Compatible Encoding - ASCII compatible encoding [1] ), care constau numai din caractere alfanumerice, așa cum este permis în domeniu nume.
Punycode a fost conceput pentru a converti fără ambiguitate numele de domenii într-o secvență de caractere ASCII . Folosit de majoritatea browserelor [2] . Există, de asemenea, programe sau servicii speciale numite convertoare Punycode care vă permit să codificați/decodați o secvență de caractere Unicode în ACE și invers.
Cel mai important motiv pentru introducerea Punycode a fost faptul că doar 26 de caractere din alfabetul latin, numere de la 0 la 9 și o cratimă sunt permise în sistemul de nume de domenii aprobat de standard. Pentru engleză și alte limbi bazate pe alfabetul latin, acest lucru este suficient, dar alte limbi pot conține caractere suplimentare, cum ar fi , sau . äöü
Caracterele de bază sunt caracterele alfabetului latin a - z (fără distincție între litere mari și mici), numerele de la 0 la 9 și o cratimă „-”; doar 37 de caractere. Algoritmul de transformare constă din două etape. În prima etapă, toate caracterele incluse în codificarea ASCII principală (codurile 0-127) sunt selectate din textul sursă și transferate într-un rând în cuvântul codificat. După aceea, dacă în text sunt întâlnite caractere non-ASCII, se adaugă o cratimă la cuvântul codificat, iar apoi conversia urmează procedura descrisă în RFC 3492 [3] .
ExempleSecvența de caractere | Codificare |
---|---|
abcdef | abcdef |
abecdöef | abcdef-qua4k |
schon | schn-7qa |
ยจฆฟคฏข | 22cdfh1b8fsa |
☺ | 74h |
adevăr | 80aafi6cg |