Compartilhar via


Suporte a IDN no WinINet

A partir do Windows Server 2008 e do Windows Vista, a parte do host da URL Unicode é convertida no IDN (Nome de Domínio Internacionalizado). Partes separadas da codificação de URL Unicode também podem ser modificadas por configurações definidas pelo aplicativo. As versões ANSI da API WinINet continuam a enviar a URL pela transmissão conforme inserido pelo aplicativo, no entanto, as versões Unicode do WinINet da API agora estão em conformidade com o padrão IDN (RFC3490) para codificações de URL.

Por padrão, quando uma URL é inserida como um parâmetro Unicode, a parte do host, para conexões diretas e proxy, é convertida no formato IDN. O aplicativo tem a opção de desabilitar a formatação do host IDN definindo a opção INTERNET_OPTION_IDN . A conversão de host IDN pode ser habilitada apenas nas conexões diretas ou proxy usando os sinalizadores de INTERNET_FLAG_IDN_DIRECT ou INTERNET_FLAG_IDN_PROXY com INTERNET_OPTION_IDN.

O exemplo de código a seguir mostra como desabilitar a conversão de host IDN para o proxy e conexões diretas.

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

Se a formatação do host IDN estiver desabilitada, o aplicativo terá a opção de especificar a página de código desejada usando INTERNET_OPTION_CODEPAGE.

O exemplo de código a seguir mostra como especificar a página de código japonês.

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

A parte do caminho da URL é codificada em UTF8 por padrão e os segmentos restantes da URL, a consulta ou o fragmento, são convertidos na página de código do sistema padrão (CP_ACP).

O exemplo a seguir mostra como especificar a página de código de idioma coreano para a parte de caminho da URL.

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

A tabela a seguir define as opções que dão suporte ao IDN. Para obter mais informações, consulte o tópico Sinalizadores de opção .

Opção Descrição
INTERNET_OPTION_CODEPAGE Essa opção é definida na solicitação ou no identificador de conexão para especificar um esquema de codificação de página de código para a parte do host da URL. Essa opção será ignorada se o IDN estiver habilitado.
INTERNET_OPTION_CODEPAGE_PATH Essa opção é definida na solicitação ou o identificador de conexão habilita o esquema de codificação especificado para a parte de caminho da URL. Por padrão, a parte do caminho da URL é codificada em UTF8.
INTERNET_OPTION_CODEPAGE_EXTRA Definir essa opção na solicitação ou no identificador de conexão habilita o esquema de codificação especificado para a parte extra da URL. Por padrão, a parte extra da URL é codificada na página de código do sistema padrão (CP_ACP).
INTERNET_OPTION_IDN Essa opção pode ser usada na solicitação ou no identificador de conexão para habilitar ou desabilitar a conversão do host IDN. Quando o IDN está desabilitado, o WinINet usa a página de código do sistema padrão para codificar a parte de host ou autoridade da URL.

 

Observação

O WinINet não dá suporte a implementações de servidor. Além disso, ele não deve ser usado de um serviço. Para implementações ou serviços de servidor, use Os Serviços HTTP do Microsoft Windows (WinHTTP).