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