【问题标题】:Why does MSDN advise use of unicode functions over ansi functions for winsock calls?为什么 MSDN 建议在 winsock 调用中使用 unicode 函数而不是 ansi 函数?
【发布时间】:2012-05-15 07:44:19
【问题描述】:
MSDN advises:
getaddrinfo 函数是一个函数的 ANSI 版本,它提供从主机名到地址的独立于协议的转换。此函数的 Unicode 版本是 GetAddrInfoW。鼓励开发人员使用 GetAddrInfoW Unicode 函数而不是 getaddrinfo ANSI 函数。
鼓励固然很好,但有什么理由这样做吗?我的意思是,主机名可以包含非 ansi 字符吗?如果是这样,这是 IPv6 独有的功能,还是 IPv4 主机名也可以包含 unicode 字符?
【问题讨论】:
标签:
unicode
winsock
ansi
msdn
【解决方案1】:
微软只是试图让所有人远离 Ansi,仅此而已。他们建议对所有事情都使用 Unicode,尤其是因为 Windows 本身是基于 Unicode 的(并且已经使用了很长时间)。但是是的,正如 Jason 所说,主机名可以通过 Punycode 编码包含 Unicode 字符,这与现有的基于 Ansi 的 DNS 系统向后兼容。