Share via


Compatibilidad con IDN en WinINet

A partir de Windows Server 2008 y Windows Vista, la parte host de la dirección URL de Unicode se convierte en el nombre de dominio internacionalizado (IDN). Las configuraciones establecidas por la aplicación también pueden modificar partes independientes de la codificación url Unicode. Las versiones ANSI de la API de WinINet siguen enviando la dirección URL a través de la conexión tal y como especifica la aplicación, pero las versiones Unicode de WinINet de la API ahora se ajustan al estándar IDN (RFC3490) para las codificaciones de direcciones URL.

De forma predeterminada, cuando se escribe una dirección URL como un parámetro Unicode, la parte del host, para las conexiones directas y de proxy, se convierte en formato IDN. La aplicación tiene la opción de deshabilitar el formato de host IDN estableciendo la opción INTERNET_OPTION_IDN . La conversión de host IDN solo se puede habilitar en las conexiones directas o de proxy mediante las marcas INTERNET_FLAG_IDN_DIRECT o INTERNET_FLAG_IDN_PROXY con INTERNET_OPTION_IDN.

En el ejemplo de código siguiente se muestra cómo deshabilitar la conversión de host IDN para el proxy y las conexiones directas.

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

Si el formato del host IDN está deshabilitado, la aplicación tiene la opción de especificar la página de códigos deseada mediante INTERNET_OPTION_CODEPAGE.

En el ejemplo de código siguiente se muestra cómo especificar la página de códigos japonesa.

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

La parte de ruta de acceso de la dirección URL está codificada UTF8 de forma predeterminada y los segmentos restantes de la dirección URL, la consulta o el fragmento, se convierten en la página de códigos del sistema predeterminada (CP_ACP).

En el ejemplo siguiente se muestra cómo especificar la página de códigos de idioma coreano para la parte de ruta de acceso de la dirección URL.

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

En la tabla siguiente se definen las opciones que admiten IDN. Para obtener más información, vea el tema Marcas de opción .

Opción Descripción
INTERNET_OPTION_CODEPAGE Esta opción se establece en la solicitud, o identificador de conexión, para especificar un esquema de codificación de página de códigos para la parte host de la dirección URL. Esta opción se omite si IDN está habilitado.
INTERNET_OPTION_CODEPAGE_PATH Esta opción se establece en la solicitud o el identificador de conexión habilita el esquema de codificación especificado para la parte de ruta de acceso de la dirección URL. De forma predeterminada, la parte de ruta de acceso de la dirección URL está codificada con UTF8.
INTERNET_OPTION_CODEPAGE_EXTRA Establecer esta opción en la solicitud o el identificador de conexión habilita el esquema de codificación especificado para la parte adicional de la dirección URL. De forma predeterminada, la parte adicional de la dirección URL se codifica en la página de códigos del sistema predeterminada (CP_ACP).
INTERNET_OPTION_IDN Esta opción se puede usar en la solicitud o en el identificador de conexión para habilitar o deshabilitar la conversión de host IDN. Cuando idn está deshabilitado, WinINet usa la página de códigos del sistema predeterminada para codificar la parte de host o autoridad de la dirección URL.

 

Nota

WinINet no admite implementaciones de servidor. Además, no se debe usar desde un servicio. En el caso de las implementaciones de servidor o los servicios, use Servicios HTTP de Microsoft Windows (WinHTTP).