域名中的 Punycode(unicode)未正确转换

域名中的 Punycode(unicode)未正确转换

使用 \url 或 \href 生成 punycode URI 的正确方法是什么?

使用 lualatex 的 MWE:

 \documentclass{article}
 \usepackage[utf8]{inputenc}
 \usepackage[unicode=true]{hyperref}
 \begin{document}
 \href{http://π.example.com/}{http://π.example.com/}
 \end{document}

PDF 生成为“http://.example.com/“而不是punycode”http://xn--1xa.example.com“我需要链接以目标受众的语言显示在 PDF 阅读器中,这样他们就应该能够看到http://π.example.com/当他们将鼠标悬停在链接上时。使用百分比代码可在 pdf 查看器中正确显示:

 http://\%CF\%80.example.com/

但会将您带到 %CF%80.example.com 而不是 xn--1xa.example.com。

答案1

Hyperref 目前尚未实现 punycode,但您可以使用任何在线编码器并明确添加字符串,例如

在此处输入图片描述

\documentclass{article}
 %\usepackage[utf8]{inputenc}
 \usepackage[unicode=true]{hyperref}
\usepackage{fontspec}
\setmainfont{Arial}

 \begin{document}

1  \href{http://xn--1xa.example.com}{http://π.example.com/}

 \end{document}

注意,我删除了inputenc不应与 luatex 一起使用的字体,并切换到了具有希腊语和拉丁语的字体。

请注意,正如你暗示的那样,你正在使用 luatex,原则上你可以使用它

https://github.com/HalosGhost/lua-punycode/tree/master/src

但是它似乎期望的 utf8 库版本与 luatex 的版本略有不同,unicode.utf8所以我现在无法让它工作。

相关内容