Condividi tramite


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
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 spazi.
ICU_NO_ENCODE
Non converte i caratteri non sicuri in sequenze di escape.
ICU_NO_META
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
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.

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 WinINet non supporta le implementazioni del server. Inoltre, non deve essere usato da un servizio. Per le implementazioni del server o i servizi, usare i 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 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

Vedi anche

Gestione di localizzatori di risorse uniformi

Funzioni WinINet