Partilhar via


Suporte IDN no WinINet

A partir do Windows Server 2008 e do Windows Vista, a parte do host da URL Unicode é convertida para o 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 através do fio, conforme inserido pelo aplicativo, no entanto, as versões WinINet Unicode 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 proxy e diretas, é convertida para o formato IDN. O aplicativo tem a opção de desativar a formatação do host IDN definindo a opção INTERNET_OPTION_IDN. A conversão de host IDN pode ser habilitada somente nas conexões diretas ou proxy usando os sinalizadores 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 as conexões proxy e 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 UTF8 por padrão, e os segmentos restantes da URL, a consulta ou o fragmento, são convertidos para a página de código padrão do sistema (CP_ACP).

O exemplo a seguir mostra como especificar a página de código do idioma coreano para a parte do 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 suportam IDN. Para obter mais informações, consulte o tópico sinalizadores de opção de.

Opção Descrição
INTERNET_OPTION_CODEPAGE Essa opção é definida na solicitação, ou identificador de conexão, para especificar um esquema de codificação de página de código para a parte do host da URL. Esta opção será ignorada se o IDN estiver ativado.
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 do 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 padrão do sistema (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 de host IDN. Quando o IDN está desativado, o WinINet usa a página de código padrão do sistema para codificar a parte de host ou autoridade da URL.

 

Observação

WinINet não suporta implementações de servidor. Além disso, não deve ser usado a partir de um serviço. Para implementações ou serviços de servidor, use Microsoft Windows HTTP Services (WinHTTP).