Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit X-RT-Original-Encoding: utf-8 Content-Length: 1954 > $ CHARSET=ASCII dig axfr . @k.root-servers.net | grep '^xn--' | wc -l > 576 > $ dig axfr . @k.root-servers.net | grep '^xn--' | wc -l > 0 Ah you're right, that does work with IDN2003. I was testing the input side: "dig straße.de", and that's not working. Here's what I'm seeing, marked with (FAIL) where it didn't match expectations: No IDN support: "dig straße.de" sends a query for "stra\195\159e.de." "dig axfr ." contains xn-- names idnkit: "dig straße.de" sends a query for "strasse.de" "dig axfr ." contains names in non-ASCII charsets idnkit (with IDN_DISABLE): "dig straße.de" sends a query for "stra\195\159e.de." "dig axfr ." contains xn-- names GNU libidn: "dig straße.de" sends a query for "strasse.de" "dig axfr ." contains names in non-ASCII charsets GNU libidn (with CHARSET=ASCII): "dig straße.de" fails (FAIL) "dig axfr ." contains xn-- names GNU libidn2: "dig straße.de" sends a query for "xn--strae-oqa.de". "dig axfr ." contains xn-- names (FAIL) GNU libidn2 (with LANG=en_US.ASCII): "dig straße.de" fails (FAIL) "dig axfr ." contains xn-- names Note, something has gone wrong in configure with building idnkit; I had to build it from an unpatched source tree. It occurs to me that we could simplify things by checking for IDN_DISABLE in dighost.c itself. Then we could have the same documentation for all three libraries. (Though it might be worthwhile to add some text explaining differences between IDN 2003 and 2008.) That still leaves the problem that libidn2 doesn't seem to be working on the output side -- I only see xn-- names from libidn2, regardless of environment. Here's a diff showing the patch as I've modified it for ISC style compatibility. Files that are automatically generated (man pages, configure, config.h) have been omitted. (I thought it might be easier if we're both working in the same code.)