# Hvordan konvertere internasjonaliserte domenenavn med Punycode

Punycode er en standardisert **kodingsmetode** som gjør det mulig å gjengi Unicode-tegn ved hjelp av et begrenset ASCII-tegnsett, noe som betyr at [internasjonaliserte domenenavn (IDN)](https://www.ionos.com/nb-no/digitalguide/domener/domenestyring/hva-er-et-internasjonalisert-domenenavn-idn/) også kan inneholde ikke-ASCII-tegn, for eksempel omlydstegn.

## Hvordan ble kodingsmetoden utviklet?

I 2003 ble Punycode standardisert av Internet Engineering Task Force (IETF) som syntaks for koding av **internasjonalisert domenenavn i applikasjoner (IDNA)**. IETF definerer et domenenavn som et IDN hvis det inneholder spesialtegn som diakritiske tegn, bokstaver eller tegn som ikke finnes i det latinske alfabetet (f.eks. omlydstegn på tysk). Slike tegn kan ikke behandles av grunnleggende protokoller som Domain Name System (DNS). I dette eksemplet bruker vi et domenenavn på tysk. Selv om *müller-büromöbel* (Müllers kontormøbler) er tillatt under toppdomenet *.de* etter innføringen av IDN-er, kan det bare behandles ved å kode de ikke-baserte tegnene, for eksempel i sammenheng med navneløsning. Mange internettprotokoller er basert på engelsk og støtter derfor bare det begrensede ASCII-tegnsettet.

For å sikre kompatibilitet mellom IDN-er og eldre internettstandarder har IETF fastsatt en metode for koding av internasjonaliserte domenenavn ved hjelp av tegn som allerede var tillatt. Denne standardiserte kodingsprosedyren kalles **Punycode**.

Note Når det gjelder e-postadresser, brukes Punycode kun for internasjonalisert e-postdomener. Hvis den lokale delen (før @-tegnet) inneholder tegn som ikke er ASCII-tegn, kodes den ved hjelp av UTF-8.

## Hvordan fungerer Punycode-koding?

### En oversikt over Punycode-prosessen

Punycode er definert av IETF i [RFC 3492](https://tools.ietf.org/html/rfc3492 "RFC 3492 on tools.ietf.org") som en mulig anvendelse av den generelle kodingsalgoritmen kjent som Bootstring. **Bootstring-algoritmen** gjør det mulig å tilordne tegnstrenger som består av vilkårlige tegnsett til et begrenset utvalg av elementer. Utviklingen av kodingsprosedyren er basert på seks prinsipper. I Punycode-koding kalles disse elementene **basistegn**, som består av små bokstaver, tall og bindestrek (-). Utviklingen av kodingsmetoden er basert på seks prinsipper.

- **Fullstendighet**: Hver utdatastreng kan tilordnes en forenklet streng ved hjelp av en boot-streng.
- **Unikhet**: Tilordningen av utgangsstrengen til den respektive Bootstring-kodingen er unik. Hver Punycode kan tilordnes nøyaktig én ASCII-motpart og omvendt.
- **Reversibilitet**: En Bootstring-koding kan reverseres når som helst uten tap av informasjon.
- **Effektivitet**: Den kodede strengen er – om i det hele tatt – bare minimalt lengre enn utdatastrengen.
- **Enkelhet**: Bootstring bruker enkle kodings- og dekodingsalgoritmer.
- **Lesbarhet**: Kun tegn som ikke kan representeres i måletegnsettet blir kodet. Alle andre tegn forblir uendret.

Punycode definerer Bootstring i henhold til kravene til internasjonaliserte domenenavn. Dette skal gjøre det mulig å tilordne Unicode-tegn via de tidligere godkjente basistegnene.

### Eksempel på Punycode

Følgende eksempel viser hvordan kodingen fungerer:

**IDN:** *müller-kontormøbler*

IDN-domenet *«müller-büromöbel»* inneholder tegnene ü og ö, som ikke inngår i det tidligere tillatte tegnsettet for domenenavn. Derfor må de kodes via Punycode for å sikre kompatibilitet.

**Trinn 1: Normalisering**

I det første trinnet sørger kodingsprosessen for at den utgående tegnstrengen normaliseres. Alle store bokstaver erstattes med tilsvarende små bokstaver.

**Trinn 2: Fjerning av alle tegn som ikke er grunnleggende**

I det andre trinnet fjernes alle tegn som ikke er grunnleggende. Disse legges deretter til domenenavnet i kodet form og skilles med en bindestrek.

Hvis Punycode-syntaksen brukes til å kode nettadresser, får hver resultatstreng et **ACE-prefiks** (forkortelse for *ASCII-kompatibel koding*):

**ACE-prefiks:** *xn–*

ACE-prefikset sikrer at domenenavn som inneholder bindestreker ikke feiltolkes som internasjonale domenenavn.

Dette gir følgende koding for IDN-navnet *«müller-büromöbel*»:

**ACE:** *xn–mller-brombel-rmb4fg*

Algoritmen som ligger til grunn for Punycode-prosessen, er bemerkelsesverdig. Den sikrer at domenenavnene, til tross for konverteringen, ikke overskrider den **maksimale lengden på 63 tegn**.

Under kodingsprosessen konverteres ikke Unicode-tegn én-til-én til ASCII-tegn. I stedet beregner algoritmen en streng basert på avstanden mellom de slettede tegnene og tegnene i utdatastrengen.

I forbindelse med eksemplet ovenfor angir strengen *rmb4fg* at *mller-brombel* må suppleres med Unicode-tegnene *ü* og *ö* på henholdsvis andre og syvende plass.

[![Image: Overview of sections of the ACE string](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/f/9/csm_using-punycode-with-domain_095d9fdcf3.webp "Overview of sections of the ACE string")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Schaubilder/using-punycode-with-domain.jpg) The ACE string consists of the ACE prefix and a puny-coded string. ### Unntak fra regelen

Det oppstår avvik hvis domenenavnet ikke inneholder noen tegn som ikke tilhører grunnsettet, eller hvis det kun inneholder tegn som ikke tilhører grunnsettet.

Et domenenavn som kun inneholder tegn som ikke er grunntegn, viser bare den kodede strengen og ACE-prefikset etter at det er kodet. Et domenenavn som *«παράδειγμα»* (gresk for «eksempel») tilsvarer følgende koding:

**IDN:** *eksempel*

**ACE:** *xn–hxajbheg2az3al*

Hvis et domenenavn kun inneholder standardtegn, brukes ikke Punycode. Følgelig legges det ikke til noe ACE-prefiks. Koding er ikke nødvendig i dette tilfellet, siden grunnleggende internettprotokoller allerede kan tolke domenenavnet.

Hvis man ser på det fullstendige domenenavnet (FQDN) som en helhet, blir hver del (toppnivådomene, andrenivådomene, tredjenivådomene osv.) kodet separat. Et domene*som пример.бг* (bulgarsk for «example.bg») kan kodes på følgende måte

**IDN:** *eksempel.bg*

**ACE:** *xn–e1afmkfd.xn–90ae*

Tabellen nedenfor gir en oversikt over de ulike variantene av Punycode-syntaksen.

<table>
  <thead>
    <tr>
      <th></th>
      <th><strong>IDN</strong></th>
      <th><strong>Punycode</strong></th>
      <th><strong>ACE</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Baserte og ikke-baserte tegn</strong></td>
      <td>`müller-büromöbel.de`</td>
      <td>`mller-brombel-rmb4fg.de`</td>
      <td>`xn--mller-brombel-rmb4fg.de`</td>
    </tr>
    <tr>
      <td><strong>Kun ikke-baserte tegn</strong></td>
      <td>`Παράδειγμα.gr`</td>
      <td>`hxajbheg2az3al.gr`</td>
      <td>`xn--hxajbheg2az3al.gr`</td>
    </tr>
    <tr>
      <td><strong>Kun basistegn</strong></td>
      <td>`example.org`</td>
      <td>`example.org`</td>
      <td>Ingen bruk</td>
    </tr>
  </tbody>
</table>

Note Punycode-algoritmen er beskrevet i detalj i RFC 3492. I tillegg inneholder dokumentet en implementering av kodingsprosedyren i programmeringsspråket C.

Brukere benytter seg vanligvis av gratis tilgjengelige **Punycode-konvertere** for å kode internasjonalisert domenenavn.

### Enkel koding med emoji-domener

Ikke bare internasjonaliserte domenenavn, men også emoji-domener kan realiseres via Punycode. For at dette skal fungere, må imidlertid toppdomenet tillate bruk av emoji-tegn, og det ønskede emoji-tegnet må være i Unicode-standarden.

Tip For øyeblikket tillater følgende toppdomener registrering av emoji-domener: .ws, .tk, .to, .ml, .ga, .cf, .gq og .fm.

Emoji-domener behandles teknisk sett som Punycode, men bør i teorien vises for brukeren som en kombinasjon av tekst og uttrykksikoner.

**Emoji-domene:** `https://i❤.ws/`

**ACE:** `https://xn--i-7iq.ws/`

Foreløpig er det praktisk talt ingen standardnettlesere som støtter dette. Hvis du skriver inn et emoji-domene i Firefox, Chrome, Safari, Edge eller Opera, viser adressefeltet bare ACE-strengen.

## Finnes det gratis Punycode-konverterere?

Det finnes gratis Punycode-generatorer som konverterer IDN-adresser til et ASCII-kompatibelt format på ulike nettsteder. Et eksempel er [Punycoder](https://www.punycoder.com/ "Convert Punycode using Punycoder").

[![Image: Punycoder, the Punycode converter](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/6/1/csm_punycode-converter-example_5f10d63381.webp "Punycoder, the Punycode converter")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/punycode-converter-example.png) Punycoder converts Punycode to Text/Unicode and vice-versa. For IDN-er under andre toppdomener er [**Punycode-konverteren av Mathias Bynens**](https://mothereff.in/punycode "Punycode converter by Mathias Bynens at mothereff.in/punycode"), basert på [punycode.js](https://github.com/mathiasbynens/punycode.js "punycode.js on github"), et godt valg.

[![Image: The Punycode converter made by Mathias Bynens based on punycode.js](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/c/f/csm_punycode-converter-based-on-js-with-example_88bdd792db.webp "The Punycode converter made by Mathias Bynens based on punycode.js")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/punycode-converter-based-on-js-with-example.png) With his \*Punycode domain name converter,\*Mathias Bynens offers an open-source tool for converting internationalised domains. ## Utgjør Punycode en sikkerhetsrisiko?

Punycode utgjør en sikkerhetsrisiko ved homografisk phishing – nettangrep der kriminelle utnytter at ulike tegn ser like ut for å lokke intetanende ofre til falske nettsteder. [Bloggeren Xudong Zheng](https://www.xudongz.com/blog/2017/idn-phishing/ "Xudong Zheng’s blog") viser hvordan et phishing-angrep ser ut ved å ta følgende Punycode-domene `https://www.xn--80ak6aa92e.com/` som eksempel. Dette fører nettbrukere til et nettsted med følgende IDN: `https://www.аррӏе.com/`

Den oppgitte nettadressen er ikke den offisielle nettsiden til det kaliforniske teknologiselskapet Apple Inc., men et phishing-nettsted som er opprettet for demonstrasjonsformål.

I stedet for ASCII-tegnet «a» med Unicode-koden U+0061 brukes det kyrilliske tegnet «а» (U+0430) – disse to tegnene er nesten umulige å skille fra hverandre med det blotte øye, men tolkes som forskjellige tegn av nettlesere. **Selv sertifikater kan ikke garantere sikkerhet** for internettbrukere. I moderne phishing-kampanjer oppretter kriminelle gyldige SSL-sertifikater med det formål å få nettstedene sine til å virke autentiske.

Nåværende versjoner av Chrome og Opera forhindrer slike phishing-angrep ved å vise ACE-strengen i stedet for det internasjonaliserte domenenavnet på IDN-er som inneholder tegn fra ulike tegnsett. Internet Explorer og Microsoft Edge hindrer tilgang til slike domener. Firefox tilbyr derimot ingen beskyttelse mot Punycode-phishing.

[![Image: Example of a homographic attack](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/d/f/csm_example-homographic-attack_2d01e6cb3b.webp "Example of a homographic attack")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/example-homographic-attack.png) Example of a homographic domain: The URL looks the same as Apple’s official website, however, the Unicode character U+0430 is actually a Cyrillic letter that is astonishingly similar to the ASCII character a. **Slik kan Firefox-brukere beskytte seg**. For å redusere risikoen forbundet med phishing-nettsteder har Firefox-brukere foreløpig bare muligheten til å forhindre at Punycode oversettes til IDN-adresser generelt. Denne midlertidige løsningen krever bare to trinn:

1. **Åpne konfigurasjonsredigereren**: Skriv inn *about:config* i adressefeltet i nettleseren din for å åpne konfigurasjonsredigereren i Firefox.
2. **Tving Punycode**: Finn innstillingen *network.IDN\_show\_punycode* og endre verdien fra false til true.

Etter konfigurasjonen vil Firefox vise internasjonalisert domener i adressefeltet som ACE-strenger.


This is a markdown version of: [https://www.ionos.com/nb-no/digitalguide/domener/domenestyring/punycode/](https://www.ionos.com/nb-no/digitalguide/domener/domenestyring/punycode/) for AI/LLM consumption.