Funzione InternetCanonicalizeUrlA (wininet.h)
Canonizza un URL, che include la conversione di caratteri e spazi non sicuri 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 contenente l'URL da canonizzare.
[out] lpszBuffer
Puntatore al buffer che riceve l'URL canonico risultante.
[in, out] lpdwBufferLength
Puntatore a una variabile che contiene le dimensioni, in caratteri, del buffer lpszBuffer . Se la funzione ha esito positivo, questo parametro riceve il numero di caratteri effettivamente copiati nel buffer lpszBuffer , che non include il carattere Null di terminazione. Se la funzione ha esito negativo, questo parametro riceve le dimensioni necessarie del buffer, in caratteri, che include il carattere null di terminazione.
[in] dwFlags
Controlla la canonizzazione. Se non vengono specificati flag, la funzione converte tutti i caratteri non sicuri e le meta sequenze (ad esempio .,\ .., e ...) in sequenze di escape. Questo parametro può avere 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 spazi. |
|
Non converte i caratteri non sicuri in sequenze di escape. |
|
Non rimuove le meta sequenze (ad esempio "." e "..") dall'URL. |
Valore restituito
Restituisce TRUE se l'operazione riesce o FALSE in caso contrario. Per ottenere informazioni sull'errore estese, chiamare la funzione GetLastError . Gli errori possibili includono quanto segue.
Codice restituito | Descrizione |
---|---|
|
Impossibile canonizzare l'URL. |
|
L'URL canonizzato è troppo grande per adattarsi al buffer fornito. Il parametro lpdwBufferLength è impostato sulle dimensioni, in byte, del buffer necessario per contenere l'URL canonizzato. |
|
Il formato dell'URL non è valido. |
|
È presente un parametro stringa, buffer, dimensione del buffer o flag non valido. |
Commenti
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 codifica sempre 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 di essere analizzato; I caratteri non sicuri vengono quindi codificati nuovamente dopo l'analisi. Questa funzione gestisce schemi di protocollo arbitrari, ma a tale scopo deve eseguire 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'uso di InternetCanonicalizeUrl nell'URL (senza flag) causa 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 nuovamente InternetCanonicalizeUrl nell'URL, la sequenza di escape %20 verrà convertita nella sequenza di escape %2520, perché il segno % è 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 da 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | wininet.h |
Libreria | Wininet.lib |
DLL | Wininet.dll |