Condividi tramite


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 . 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 sequenze meta(ad esempio .,\ .., e ...) in sequenze di escape. Questo parametro può essere uno dei valori seguenti.

Valore Significato
ICU_BROWSER_MODE
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.
ICU_DECODE
Converte tutte le sequenze %XX in caratteri, incluse le sequenze di escape, prima dell'analisi dell'URL.
ICU_ENCODE_PERCENT
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.
ICU_ENCODE_SPACES_ONLY
Codifica solo gli spazi.
ICU_NO_ENCODE
Non converte caratteri non sicuri in sequenze di escape.
ICU_NO_META
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 . I possibili errori includono quanto segue.

Codice restituito Descrizione
ERROR_BAD_PATHNAME
Impossibile canonizzare l'URL.
ERROR_INSUFFICIENT_BUFFER
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.
ERROR_INTERNET_INVALID_URL
Il formato dell'URL non è valido.
ERROR_INVALID_PARAMETER
È 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 WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni del server o i servizi, usare Servizi HTTP Di Microsoft Windows (WinHTTP).
 

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

Vedere anche

la gestione di localizzatori di risorse uniformi

funzioni WinINet