idnToUnicode 函数 (winnls.h)
将国际化域名的 Punycode 形式 (IDN) 或其他国际化标签转换为正常的 Unicode UTF-16 编码语法。
语法
int IdnToUnicode(
[in] DWORD dwFlags,
[in] LPCWSTR lpASCIICharStr,
[in] int cchASCIIChar,
[out, optional] LPWSTR lpUnicodeCharStr,
[in] int cchUnicodeChar
);
参数
[in] dwFlags
指定转换选项的标志。 有关详细定义,请参阅 IdnToAscii 的 dwFlags 参数。
[in] lpASCIICharStr
指向表示 IDN 或其他国际化标签的 Punycode 编码的字符串的指针。 此字符串只能包含 ASCII 字符,并且可以包含 Punycode 编码的 Unicode。 函数将 Punycode 值解码为其 UTF-16 值。
[in] cchASCIIChar
lpASCIICharStr 指示的输入字符串中的字符计数。
[out, optional] lpUnicodeCharStr
指向缓冲区的指针,该缓冲区接收与输入字符串的 Punycode 值等效的正常 Unicode UTF-16 编码。 或者,如果 cchUnicodeChar 设置为 0,函数可以检索此参数的 NULL。 在这种情况下,函数返回此缓冲区所需的大小。
[in] cchUnicodeChar
lpUnicodeCharStr 指示的缓冲区的大小(以字符为单位)。 应用程序可以将大小设置为 0 以在 lpUnicodeCharStr 中检索 NULL,并使函数返回所需的缓冲区大小。
返回值
如果成功,则返回 在 lpUnicodeCharStr 中检索到的字符数。 仅当输入字符串以 null 结尾时,检索到的字符串才以 null 结尾。
如果函数成功且 cchUnicodeChar 的值为 0,则该函数将返回所需的大小(以字符为单位),包括终止 null 字符(如果它是输入缓冲区的一部分)。
如果函数不成功,则返回 0。 若要获取扩展错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:
- ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL。
- ERROR_INVALID_FLAGS。 为标志提供的值无效。
- ERROR_INVALID_NAME。 向函数提供的名称无效。 请注意,此错误代码捕获所有语法错误。
- ERROR_INVALID_PARAMETER。 任何参数值都无效。
- ERROR_NO_UNICODE_TRANSLATION。 在字符串中找到无效的 Unicode。
注解
请参阅 IdnToAscii 的备注。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | winnls.h (包括 Windows.h) |
Library | Normaliz.lib |
DLL | Normaliz.dll |
可再发行组件 | Microsoft 国际化域名 (IDN) 带 SP2 及更高版本 Windows XP 或 Windows Server 2003 SP1 的缓解 API |