Funzione InternetCanonicalizeUrlA (wininet.h)
Canonizza un URL, che include la conversione di caratteri non sicuri e spazi in sequenze di escape.
Sintassi
BOOL InternetCanonicalizeUrlA(
[in] LPCSTR lpszUrl,
[out] LPSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
Parametri
[in] lpszUrl
Puntatore alla stringa che contiene l'URL da canonizzare.
[out] lpszBuffer
Puntatore al buffer che riceve l'URL canonizzato risultante.
[in, out] lpdwBufferLength
Puntatore a una variabile contenente le dimensioni, in caratteri, del buffer lpszBuffer
[in] dwFlags
Controlla la canonizzazione. Se non vengono specificati flag, la funzione converte tutti i caratteri non sicuri e le sequenze meta(ad esempio .,\ .., e ...) in sequenze di escape. Questo parametro può essere uno dei valori seguenti.
Valore | Significato |
---|---|
|
Non codifica o decodifica i caratteri dopo "#" o "?", e non rimuove gli spazi vuoti finali dopo "?". Se questo valore non viene specificato, l'intero URL viene codificato e lo spazio vuoto finale viene rimosso. |
|
Converte tutte le sequenze %XX in caratteri, incluse le sequenze di escape, prima dell'analisi dell'URL. |
|
Codifica i segni di percentuale rilevati. Per impostazione predefinita, i segni di percentuale non vengono codificati. Questo valore è disponibile in Microsoft Internet Explorer 5 e versioni successive. |
|
Codifica solo gli spazi. |
|
Non converte caratteri non sicuri in sequenze di escape. |
|
Non rimuove le meta sequenze (ad esempio "." e "..") dall'URL. |
Valore restituito
Restituisce TRUE in caso di esito positivo oppure FALSE in caso contrario. Per ottenere informazioni estese sull'errore, chiamare la funzione GetLastError
Codice restituito | Descrizione |
---|---|
|
Impossibile canonizzare l'URL. |
|
L'URL canonizzato è troppo grande per adattarsi al buffer fornito. Il parametro lpdwBufferLength |
|
Il formato dell'URL non è valido. |
|
È presente un parametro stringa, buffer, dimensione del buffer o flag non valido. |
Osservazioni
In Internet Explorer 4.0 e versioni successive InternetCanonicalizeUrl funziona sempre come se il flag ICU_BROWSER_MODE sia impostato. Le applicazioni client che devono canonizzare l'intero URL devono usare CoInternetParseUrl (con l'azione PARSE_CANONICALIZE e il flag URL_ESCAPE_UNSAFE) o UrlCanonicalize.
InternetCanonicalizeUrl sempre codificato per impostazione predefinita, anche se è stato specificato il flag ICU_DECODE. Per decodificare senza reencoding, usare ICU_DECODE | ICU_NO_ENCODE. Se il flag ICU_DECODE viene usato senza ICU_NO_ENCODE, l'URL viene decodificato prima dell'analisi; i caratteri non sicuri vengono quindi codificati nuovamente dopo l'analisi. Questa funzione gestisce schemi di protocollo arbitrari, ma a tale scopo deve fare inferenze dal set di caratteri non sicuro.
Le applicazioni che chiamano InternetCanonicalizeUrl quando si usa Internet Explorer 3.0 (o quando si imposta il flag di ICU_ENCODE_PERCENT per Internet Explorer 5 e versioni successive) devono tenere traccia dell'utilizzo di questa funzione in un URL specifico. Se i caratteri non sicuri in un URL sono stati convertiti in sequenze di escape, l'utilizzo di InternetCanonicalizeUrl di nuovo nell'URL (senza flag) determina la conversione delle sequenze di escape in un'altra sequenza di escape. Ad esempio, uno spazio vuoto in un URL viene convertito nella sequenza di escape %20. Chiamando internetCanonicalizeUrl di nuovo nell'URL, la sequenza di escape %20 verrà convertita nella sequenza di escape %2520, perché il segno di % è un carattere non sicuro riservato per le sequenze di escape e viene sostituito dalla funzione con la sequenza di escape %25.
Come tutti gli altri aspetti dell'API WinINet, questa funzione non può essere chiamata in modo sicuro dall'interno di DllMain o dai costruttori e distruttori di oggetti globali.
Nota
L'intestazione wininet.h definisce InternetCanonicalizeUrl come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 Professional [solo app desktop] |
server minimo supportato | Windows 2000 Server [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
wininet.h |
libreria |
Wininet.lib |
dll | Wininet.dll |