0

我在本地网络上有一些 Windows 7 机器,每台机器都有一个主机名。其中一个是运行 Java 8 应用程序,该应用程序必须通过 HTTP 访问另一台机器,因此它需要形成一个包含服务器机器主机名的 URI。运行 HTTP 服务器的机器有一个包含日文字符的主机名,这些字符在 URI 中是不允许的。

如何构造 URI 以访问本地网络上的服务器?RFC 4501,“域名系统统一资源标识符”,表示根据 RFC 3986,“统一资源标识符 (URI):通用语法”进行编码,我将其推断为 UTF-8 八位字节的百分比编码。但是 RFC 3490,“应用程序中的国际化域名 (IDNA)”,表示要转换为 Punycode。

那么它是百分比编码还是 Punycode 呢?哪种编码允许 Java 应用程序成功查找并连接到本地网络上的另一台 Windows 7 机器,主机名中包含扩展字符?

4

2 回答 2

1

DNS 仅支持主机名中的 ASCII,因此必须在 DNS 中注册包含国际字符的主机名,并使用国际化域名(IDN) 格式在 URL 中进行编码,该格式在编码非 ASCII 字符时使用NameprepPunycode 。

另请查看RFC 3987 Internationalized Resource Identifiers (IRIs),它允许国际字符(大部分)未编码,并定义了在 IRI 和 URI 之间转换的算法。

于 2015-03-28T05:28:40.027 回答
0

正确答案是“在形成 URI 时使用 Punycode 对主机名进行编码”。这在 W3C 文章An Introduction to Multilingual Web Addresses中进行了解释,并在RFC 3987 “国际化资源标识符 (IRI)”中指定。

于 2015-03-28T16:29:29.270 回答