Функция 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 или более поздняя версия) |