Função InternetCanonicalizeUrlA (wininet.h)
Canoniza uma URL, que inclui a conversão de caracteres e espaços não seguros em sequências de escape.
Sintaxe
BOOL InternetCanonicalizeUrlA(
[in] LPCSTR lpszUrl,
[out] LPSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
Parâmetros
[in] lpszUrl
Um ponteiro para a cadeia de caracteres que contém a URL a ser canônica.
[out] lpszBuffer
Um ponteiro para o buffer que recebe a URL canônica resultante.
[in, out] lpdwBufferLength
Um ponteiro para uma variável que contém o tamanho, em caracteres, do buffer lpszBuffer. Se a função for bem-sucedida, esse parâmetro receberá o número de caracteres realmente copiados para o buffer lpszBuffer, que não inclui o caractere nulo de terminação. Se a função falhar, esse parâmetro receberá o tamanho necessário do buffer, em caracteres, que inclui o caractere nulo de encerramento.
[in] dwFlags
Controla a canonicalização. Se nenhum sinalizador for especificado, a função converterá todos os caracteres não seguros e meta sequências (como .,\ .., e ...) em sequências de escape. Esse parâmetro pode ser um dos valores a seguir.
Valor | Significado |
---|---|
|
Não codifica ou decodifica caracteres após "#" ou "?", e não remove o espaço em branco à direita após "?". Se esse valor não for especificado, toda a URL será codificada e o espaço em branco à direita será removido. |
|
Converte todas as sequências de %XX em caracteres, incluindo sequências de escape, antes que a URL seja analisada. |
|
Codifica qualquer sinal de porcentagem encontrado. Por padrão, os sinais de porcentagem não são codificados. Esse valor está disponível no Microsoft Internet Explorer 5 e posterior. |
|
Codifica apenas espaços. |
|
Não converte caracteres não seguros em sequências de escape. |
|
Não remove meta sequências (como "." e "..") da URL. |
Valor de retorno
Retorna TRUE se tiver êxito ou false caso contrário. Para obter informações de erro estendidas, chame a função
Código de retorno | Descrição |
---|---|
|
Não foi possível canonizar a URL. |
|
A URL canônica é muito grande para caber no buffer fornecido. O parâmetro lpdwBufferLength é definido como o tamanho, em bytes, do buffer necessário para manter a URL canônica. |
|
O formato da URL é inválido. |
|
Há um parâmetro de cadeia de caracteres, buffer, tamanho do buffer ou sinalizadores inválidos. |
Observações
No Internet Explorer 4.0 e posterior, InternetCanonicalizeUrl sempre funciona como se o sinalizador de ICU_BROWSER_MODE estivesse definido. Os aplicativos cliente que devem canonizar toda a URL devem usar CoInternetParseUrl (com a ação PARSE_CANONICALIZE e o sinalizador URL_ESCAPE_UNSAFE) ou UrlCanonicalize.
InternetCanonicalizeUrl sempre codifica por padrão, mesmo que o sinalizador ICU_DECODE tenha sido especificado. Para decodificar sem reencodificação, use ICU_DECODE | ICU_NO_ENCODE. Se o sinalizador ICU_DECODE for usado sem ICU_NO_ENCODE, a URL será decodificada antes de ser analisada; os caracteres não seguros são codificados novamente após a análise. Essa função lida com esquemas de protocolo arbitrários, mas, para isso, deve fazer inferências do conjunto de caracteres não seguro.
Os aplicativos que chamam InternetCanonicalizeUrl ao usar o Internet Explorer 3.0 (ou ao definir o sinalizador ICU_ENCODE_PERCENT para o Internet Explorer 5 e posterior) devem acompanhar o uso dessa função em uma URL específica. Se caracteres não seguros em uma URL tiverem sido convertidos em sequências de escape, usar InternetCanonicalizeUrl novamente na URL (sem sinalizadores) fará com que as sequências de escape sejam convertidas em outra sequência de escape. Por exemplo, um espaço em branco em uma URL seria convertido na sequência de escape %20. Chamar InternetCanonicalizeUrl novamente na URL faria com que a sequência de escape %20 fosse convertida na sequência de escape %2520, pois o sinal de % é um caractere não seguro reservado para sequências de escape e é substituído pela função pela sequência de escape %25.
Assim como todos os outros aspectos da API WinINet, essa função não pode ser chamada com segurança de dentro do DllMain ou dos construtores e destruidores de objetos globais.
Nota
O cabeçalho wininet.h define InternetCanonicalizeUrl como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 Professional [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows 2000 Server [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | wininet.h |
biblioteca | Wininet.lib |
de DLL |
Wininet.dll |
Consulte também
tratando de recursos uniformes
do