我遇到了转换包含德语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)。
使用IDNA2003代替IDNA2008。