Condividi tramite


Supporto IDN in WinINet

A partire da Windows Server 2008 e Windows Vista, la parte host dell'URL Unicode viene convertita in IDN (Internationalized Domain Name). Le parti separate della codifica URL Unicode possono essere modificate anche dalle configurazioni impostate dall'applicazione. Le versioni ANSI dell'API WinINet continuano a inviare l'URL tramite rete come immesso dall'applicazione, ma le versioni Unicode WinINet dell'API ora sono conformi allo standard IDN (RFC3490) per le codifiche URL.

Per impostazione predefinita, quando un URL viene immesso come parametro Unicode, la parte host, sia per le connessioni proxy che per le connessioni dirette, viene convertita in formato IDN. L'applicazione ha la possibilità di disabilitare la formattazione dell'host IDN impostando l'opzione INTERNET_OPTION_IDN. La conversione dell'host IDN può essere abilitata solo nelle connessioni dirette o proxy usando i flag INTERNET_FLAG_IDN_DIRECT o INTERNET_FLAG_IDN_PROXY con INTERNET_OPTION_IDN.

Nell'esempio di codice seguente viene illustrato come disabilitare la conversione dell'host IDN sia per il proxy che per le connessioni dirette.

DWORD IDN = 0; 
InternetSetOption( hRequest, 
                   INTERNET_OPTION_IDN,
                   &IDN, 
                   sizeof(DWORD) ); 

Se la formattazione dell'host IDN è disabilitata, l'applicazione può specificare la tabella codici desiderata usando INTERNET_OPTION_CODEPAGE.

Nell'esempio di codice seguente viene illustrato come specificare la tabella codici giapponese.

DWORD CP_SHIFT_JIS = 932;  // ANSI/OEM  Japanese, Shift-JIS
InternetSetOption( hRequest, 
                   INTERNET_OPTION_CODEPAGE,
                   &CP_SHIFT_JIS, 
                   Sizeof(DWORD) ); 

La parte del percorso dell'URL è con codifica UTF8 per impostazione predefinita e i segmenti rimanenti dell'URL, la query o il frammento, vengono convertiti nella tabella codici di sistema predefinita (CP_ACP).

Nell'esempio seguente viene illustrato come specificare la tabella codici della lingua coreana per la parte relativa al percorso dell'URL.

DWORD CP_KOREAN = 949;   // ANSI/OEM Korean 
InternetSetOption( hRequest, 
                   INTERNET_OPTION_CODEPAGE_PATH,
                   &CP_KOREAN, 
                   sizeof(DWORD) );

La tabella seguente definisce le opzioni che supportano IDN. Per altre informazioni, vedere l'argomento flag di opzione.

Opzione Descrizione
INTERNET_OPTION_CODEPAGE Questa opzione è impostata nella richiesta o nell'handle di connessione per specificare uno schema di codifica della tabella codici per la parte host dell'URL. Questa opzione viene ignorata se L'IDN è abilitato.
INTERNET_OPTION_CODEPAGE_PATH Questa opzione viene impostata sulla richiesta o sull'handle di connessione abilita lo schema di codifica specificato per la parte del percorso dell'URL. Per impostazione predefinita, la parte del percorso dell'URL è con codifica UTF8.
INTERNET_OPTION_CODEPAGE_EXTRA L'impostazione di questa opzione nella richiesta o nell'handle di connessione abilita lo schema di codifica specificato per la parte aggiuntiva dell'URL. Per impostazione predefinita, la parte aggiuntiva dell'URL viene codificata nella tabella codici di sistema predefinita (CP_ACP).
INTERNET_OPTION_IDN Questa opzione può essere usata nella richiesta o nell'handle di connessione per abilitare o disabilitare la conversione dell'host IDN. Quando L'IDN è disabilitato, WinINet usa la tabella codici di sistema predefinita per codificare la parte host o authority dell'URL.

 

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).