UrlUnescapeA 函数 (shlwapi.h)

将转义序列转换回普通字符。

语法

LWSTDAPI UrlUnescapeA(
  [in, out]           PSTR  pszUrl,
  [out, optional]     PSTR  pszUnescaped,
  [in, out, optional] DWORD *pcchUnescaped,
                      DWORD dwFlags
);

参数

[in, out] pszUrl

类型: PTSTR

指向包含 URL 的以 null 结尾的字符串的指针。 如果 dwFlags 设置为 URL_UNESCAPE_INPLACE,则通过此参数返回转换后的字符串。

[out, optional] pszUnescaped

类型: PTSTR

指向缓冲区的指针,该缓冲区将接收一个以 null 结尾的字符串,该字符串包含 pszURL 的未转义版本。 如果在 dwFlags 中设置了URL_UNESCAPE_INPLACE,则忽略此参数。

[in, out, optional] pcchUnescaped

类型: DWORD*

pszUnescaped 指向的缓冲区中的字符数。 输入时, pcchUnescaped 指向 的值设置为缓冲区的大小。 如果函数返回成功代码且 未设置URL_UNESCAPE_INPLACE 标志,则 pcchUnescaped 指向的值将设置为写入该缓冲区的字符数,不计算终止 NULL 字符。 如果返回E_POINTER错误代码,则缓冲区太小,并且 pcchUnescaped 指向 的值设置为缓冲区必须能够包含的所需字符数。 如果返回任何其他错误,则 未定义 pcchUnescaped 指向的值。

dwFlags

类型:DWORD

控制哪些字符未转义的标志。 它可以是以下标志的组合。

URL_DONT_UNESCAPE_EXTRA_INFO

不转换 # 或 ? 字符,或字符串中其后的任何字符。

URL_UNESCAPE_AS_UTF8

在 Windows 8 中引入。 解码使用 URL_ESCAPE_AS_UTF8 标志编码的 URL。

URL_UNESCAPE_INPLACE

使用 pszURL 返回转换后的字符串,而不是 pszUnescaped

返回值

类型: HRESULT

如果成功,则返回S_OK。 如果未设置 URL_UNESCAPE_INPLACE 标志, 则 pcchUnescaped 指向的值将设置为 pszUnescaped 指向的输出缓冲区中的字符数。 如果未设置URL_UNESCAPE_INPLACE标志并且输出缓冲区太小,则返回 E_POINTERpcchUnescaped 参数将设置为所需的缓冲区大小。 否则,返回标准错误值。

注解

转义序列的形式为“%xy”。

输入字符串的长度不能超过 INTERNET_MAX_URL_LENGTH。

注意

shlwapi.h 标头将 UrlUnescape 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 专业版、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
Library Shlwapi.lib
DLL Shlwapi.dll (5.0 或更高版本)