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