getaddrinfo 函数是提供从主机名到地址的独立于协议的转换的函数的 ANSI 版本。此函数的 Unicode 版本是 GetAddrInfoW。鼓励开发人员使用 GetAddrInfoW Unicode 函数而不是 getaddrinfo ANSI 函数。
鼓励是好的,但有什么理由这样做吗?我的意思是,主机名可以包含非 ansi 字符吗?如果是这样,这是 IPv6 独有的功能,还是 IPv4 主机名也可以包含 unicode 字符?
微软只是试图让所有人远离 Ansi,仅此而已。他们建议对所有事情都使用 Unicode,尤其是因为 Windows 本身是基于 Unicode 的(并且已经使用了很长时间)。但是是的,正如 Jason 所说,主机名可以通过 Punycode 编码包含 Unicode 字符,这与现有的基于 Ansi 的 DNS 系统向后兼容。
DNS通过称为 Punycode 的编码方案支持所谓的“国际化域名”。所以是的,主机名可以包含 Unicode 字符。它与 IPv4 或 IPv6 无关,因为那是完全不同的网络协议。