德语 Eszett "ß" 的 Java IDN 转换

问题描述

我在转换包含德语 Eszett "ß" 的域名时遇到问题,通常我使用 java IDN 类来执行此操作,但在此特定情况下无法按预期工作。

        String domainName = "faß.de";
        String expectedAsciiDomainName = "xn--fa-hia.de";
        if (expectedAsciiDomainName.equals(IDN.toASCII(domainName))) {
            System.out.println("Cool");
        } else {
            System.out.println("Not cool");
        }

为什么它不起作用的任何想法?谢谢

我已经看到在 PHP 中有一个 IDN 转换的非过渡处理选项,它非常有效:

echo idn_to_ascii('faß.de',IDNA_NONTRANSITIONAL_TO_ASCII) . PHP_EOL; // return xn--fa-hia.de

有没有办法在java上做同样的事情?

解决方法

我终于找到了这个库:https://github.com/unicode-org/icu (作为 java 类 IDN.toASCII 使用 IDNA2003 而不是 IDNA2008)它完美地工作......