Функция InternetCanonicalizeUrlA (wininet.h)
Канонизирует URL-адрес, который включает преобразование небезопасных символов и пробелов в escape-последовательности.
Синтаксис
BOOL InternetCanonicalizeUrlA(
[in] LPCSTR lpszUrl,
[out] LPSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
Параметры
[in] lpszUrl
Указатель на строку, содержащую URL-адрес для канонизации.
[out] lpszBuffer
Указатель на буфер, получающий полученный канонизированный URL-адрес.
[in, out] lpdwBufferLength
Указатель на переменную, содержащую размер буфера lpszBuffer. Если функция выполнена успешно, этот параметр получает количество символов, фактически скопированных в буфер lpszBuffer, который не включает завершающий символ NULL. Если функция завершается ошибкой, этот параметр получает требуемый размер буфера в символах, включающих завершающий символ NULL.
[in] dwFlags
Управляет канонизацией. Если флаги не указаны, функция преобразует все небезопасные символы и мета последовательности (например, .,\., и ...) в escape-последовательности. Этот параметр может быть одним из следующих значений.
Ценность | Значение |
---|---|
|
Не кодирует или декодирует символы после "#" или "?", и не удаляет конечный пробел после "?". Если это значение не указано, весь URL-адрес закодирован и удаляется конечный пробел. |
|
Преобразует все %XX последовательности в символы, включая escape-последовательности, перед анализом URL-адреса. |
|
Кодирует любые признаки процента, возникшие. По умолчанию знаки процента не кодируются. Это значение доступно в Microsoft Internet Explorer 5 и более поздних версиях. |
|
Кодирует только пробелы. |
|
Не преобразует небезопасные символы в escape-последовательности. |
|
Не удаляет мета последовательности (например, "." и ".") из URL-адреса. |
Возвращаемое значение
Возвращает TRUE, если выполнено успешно или FALSE в противном случае. Чтобы получить расширенные сведения об ошибке, вызовите функцию getLastError
Возвращаемый код | Описание |
---|---|
|
Не удалось канонизировать URL-адрес. |
|
Канонический URL-адрес слишком велик, чтобы поместиться в предоставленный буфер. Параметр lpdwBufferLength имеет размер в байтах буфера, необходимого для хранения канонического URL-адреса. |
|
Недопустимый формат URL-адреса. |
|
Существует недопустимый параметр строки, буфера, размера буфера или флагов. |
Замечания
В Internet Explorer 4.0 и более поздней версии InternetCanonicalizeUrl всегда работает так, как если установлен флаг ICU_BROWSER_MODE. Клиентские приложения, которые должны канонизировать весь URL-адрес, должны использовать CoInternetParseUrl (с действием PARSE_CANONICALIZE и флагом URL_ESCAPE_UNSAFE) или UrlCanonicalize.
InternetCanonicalizeUrl всегда кодирует по умолчанию, даже если был указан флаг ICU_DECODE. Чтобы декодировать без повторной кодировки, используйте ICU_DECODE | ICU_NO_ENCODE. Если флаг ICU_DECODE используется без ICU_NO_ENCODE, URL-адрес декодируется перед анализом; Небезопасные символы затем повторно кодируются после синтаксического анализа. Эта функция обрабатывает произвольные схемы протокола, но для этого необходимо сделать вывод из небезопасного набора символов.
Приложения, вызывающие InternetCanonicalizeUrl при использовании Internet Explorer 3.0 (или при настройке флага ICU_ENCODE_PERCENT для Internet Explorer 5 и более поздних версий) должны отслеживать использование этой функции в определенном URL-адресе. Если небезопасные символы в URL-адресе были преобразованы в escape-последовательности, при использовании InternetCanonicalizeUrl снова на URL-адресе (без флагов) происходит преобразование escape-последовательностей в другую escape-последовательность. Например, пустое пространство в URL-адресе будет преобразовано в escape-последовательность %20. Вызов InternetCanonicalizeUrl еще раз на URL-адресе приведет к преобразованию последовательности escape-%20 в %2520escape-последовательности, так как знак % является небезопасным символом, зарезервированным для escape-последовательностей и заменен функцией на escape-последовательность %25.
Как и все остальные аспекты API WinINet, эта функция не может быть безопасно вызвана из dllMain или конструкторов и деструкторов глобальных объектов.
Заметка
Заголовок wininet.h определяет InternetCanonicalizeUrl как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | wininet.h |
библиотеки |
Wininet.lib |
DLL | Wininet.dll |
См. также
обработка единого указателя ресурсов
функций WinINet