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

指定转换选项的标志。 有关详细定义,请参阅 IdnToAsciidwFlags 参数。

[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

另请参阅

处理国际化域名 (IDN)

IdnToAscii

IdnToUnicode

国家/地区语言支持

国家/地区语言支持函数