我正在尝试使用 Punycode 对一些 Unicode URL 进行编码。这些 URL 有一个包含非 ASCII 字符的查询参数,例如:
https://en.wiktionary.org/w/index.php?title=Clœlia&printable=yes
问题是,当我尝试在 Java 中执行此操作时,生成的 URL 是错误的:
String link = "https://en.wiktionary.org/w/index.php?title=Clœlia&printable=yes";
link = IDN.toASCII(link);
// -> link = http://en.wiktionary.org/w/index.xn--php?title=cllia&printable=yes-hgf
如果我这样做,结果字符串是不同的(我不知道为什么),但也是错误的:
String link = "http://en.wiktionary.org/w/index.php?title=" + IDN.toASCII("Clœlia") + "&printable=yes";
// -> link = http://en.wiktionary.org/w/index.php?title=xn--cllia-ibb&printable=yes
如果我从 Chrome 复制地址并将其粘贴到这里,我会得到这个 URL,这就是我想要的:
https://en.wiktionary.org/w/index.php?title=Cl%C5%93lia&printable=yes
我在这里做错了什么?