Поделиться через


Функция UrlCanonicalizeA (shlwapi.h)

Преобразует строку URL-адреса в каноническую форму.

Синтаксис

LWSTDAPI UrlCanonicalizeA(
  [in]      PCSTR pszUrl,
  [out]     PSTR  pszCanonicalized,
  [in, out] DWORD *pcchCanonicalized,
            DWORD dwFlags
);

Параметры

[in] pszUrl

Тип: PCTSTR

Указатель на строку, завершающуюся значением NULL, максимальную длину INTERNET_MAX_URL_LENGTH, содержащую строку URL-адреса. Если строка не ссылается на файл, она должна содержать допустимую схему, например "http://".

[out] pszCanonicalized

Тип: PTSTR

Указатель на буфер, который, когда эта функция возвращается успешно, получает преобразованный URL-адрес в виде строки, завершаемой значением NULL.

[in, out] pcchCanonicalized

Тип: DWORD*

Указатель на значение, указанное в записи, имеет число символов в буфере pszCanonicalized.

dwFlags

Тип: DWORD

Флаги, указывающие, как URL-адрес преобразуется в каноническую форму. Следующие флаги можно объединить.

URL_UNESCAPE (0x10000000)

Отмена экранирования всех escape-последовательностей, содержащих URL-адреса, с двумя исключениями. Escape-последовательности для "?" и "#" не экранируются. Если один из флагов URL_ESCAPE_XXX также задан, два URL-адреса сначала не экранируются, а затем объединяются, а затем экранируются.

URL_ESCAPE_UNSAFE (0x20000000)

Замените небезопасные символы их escape-последовательности. Небезопасные символы — это символы, которые могут быть изменены во время транспорта через Интернет, а также включают символы (<, >, ", ", }, " Этот флаг применяется ко всем URL-адресам, включая непрозрачные URL-адреса.

URL_PLUGGABLE_PROTOCOL (0x40000000)

Объедините URL-адреса с клиентскими подключаемыми протоколами в соответствии со спецификацией W3C. Этот флаг не применяется к стандартным протоколам, таким как ftp, http, gopher и т. д. Если этот флаг задан, UrlCombine не упрощает URL-адреса, поэтому также не требуется задавать URL_DONT_SIMPLIFY.

URL_ESCAPE_SPACES_ONLY (0x04000000)

Замените только пробелы escape-последовательности. Этот флаг имеет приоритет над URL_ESCAPE_UNSAFE, но не применяется к непрозрачным URL-адресам.

URL_DONT_SIMPLIFY (0x08000000)

Относитесь к "/./" и "/.". /" в строке URL-адреса как литеральные символы, а не как сокращенные для навигации. Дополнительные сведения см. в примечаниях.

URL_NO_META (0x08000000)

Определяется так же, как и URL_DONT_SIMPLIFY.

URL_ESCAPE_PERCENT (0x00001000)

Преобразуйте любое вхождение "%" в ее escape-последовательность.

URL_ESCAPE_AS_UTF8 (0x00040000)

Windows 7 и более поздних версий. Процент кодирует все символы, отличные от ASCII, в качестве эквивалентов UTF-8.

Возвращаемое значение

Тип: HRESULT

Если эта функция выполнена успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT.

Замечания

Эта функция выполняет такие задачи, как замена небезопасных символов их escape-последовательности и свертывание последовательностей, таких как ".....".

Если строка URL-адреса содержит "/.". /" или "/./", UrlCanonicalize обрабатывает символы как указание навигации в иерархии URL-адресов. Функция упрощает URL-адреса перед объединением их. Например, "/hello/жестоко/.". /world упрощено для "/hello/world". Исключения из этого поведения по умолчанию происходят в следующих случаях:

  • Если флаг URL_DONT_SIMPLIFY задан в dwFlags, функция не упрощает URL-адреса. В этом случае :/hello/жестоко/.. /world" остается, как это.
  • Значение "/.". /" или "/./" — это первый сегмент пути (например, "http://domain/../path1/path2/file.htm"), UrlCanonicalize выводит путь точно так же, как входные данные.

Заметка

Заголовок shlwapi.h определяет UrlCanonicalize как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный, Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка shlwapi.h
библиотеки Shlwapi.lib
DLL Shlwapi.dll (версия 5.0 или более поздняя версия)

См. также

обработка единого указателя ресурсов