With the introduction of IDN (Internationalized domain names; domain names with umlauts), an algorithm was defined to determine how a unicode string should be converted into a valid ASCII DOMAIN. This ACE string (ACE = ASCII Compatible Encoding) is then entered in the DNS. With an IDN, the ACE string in the DNS is not identical to the DOMAIN.
bücher.ch is the DOMAIN,
xn--bcher-kva.ch is the ACE string that is entered into the DNS.
More information about ACE-String can be found on Wikipedia.
What does “Name Preparation” or “Punycode” mean?
For a Unicode string to be converted into an ACE string, certain prerequisites must be fulfilled. This is ensured by the “Nameprep” procedure. It checks whether there are any invalid characters in the string. Umlauts consisting of two characters must be replaced by one, e.g. a + ¨ = ä. The sharp ß is converted to ss. This process is called “normalization”. In addition, Latin uppercase letters are always converted into lowercase letters, which is called “Case Mapping” or “Case Folding”.
If the string contains non-ASCII characters after “Name Preparation”, the system flags this character string with the prefix xn--. Punycode takes the non-ASCII characters from the original DOMAIN, remembers the position of these characters and appends them, separated by a further hyphen, in coded form.