问题描述
我在转换包含德语 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)它完美地工作......