IDNA2008 vs 2003.
How a domain is encoded under each standard.
IDNA2008 A-label
xn--strae-oqa.de
Nontransitional UTS #46
IDNA2003 A-label
strasse.de
Transitional mapping
Profiles diverge
Yes
Different A-labels = different DNS names
Deviation chars
1
ß ς ZWJ ZWNJ
Host or URL
Parsed host: straße.de
Processing result
- U-label (2008)
- straße.de
- A-label (2008)
- xn--strae-oqa.de
- A-label (2003)
- strasse.de
- Status
- Valid, profiles disagree
- A-labels diverge: IDNA2003 produces strasse.de, IDNA2008 produces xn--strae-oqa.de. Resolvers on each side will not see the same name.
- U+00DF Latin small sharp s: IDNA2003 Nameprep mapped ß → ss, so straße.de and strasse.de were the same name. IDNA2008 treats ß as PVALID: they are different A-labels.
| Deviation | Code | IDNA2003 | Why it still matters |
|---|---|---|---|
| ß Latin small sharp s | U+00DF | → ss | IDNA2003 Nameprep mapped ß → ss, so straße.de and strasse.de were the same name. IDNA2008 treats ß as PVALID: they are different A-labels. |
| ς Greek small final sigma | U+03C2 | → σ | IDNA2003 folded final sigma to σ. IDNA2008 leaves it. Two A-labels for what looks like the same Greek word. |
| Zero Width Non-Joiner | U+200C | → (empty) | CONTEXTJ in RFC 5892. Legal only between certain joining characters (Arabic, Indic). In a Latin host it is a hidden split that IDNA2008 rejects. |
| Zero Width Joiner | U+200D | → (empty) | The other CONTEXTJ mark. IDNA2003 stripped it and the label still resolved. IDNA2008 CheckJoiners fails the label. |