Поделиться через


Поддержка IDN в WinINet

Начиная с Windows Server 2008 и Windows Vista, хост-часть URL-адреса Юникода преобразуется в международное доменное имя (IDN). Отдельные части кодировки URL-адресов Юникода также можно изменять с помощью конфигураций, заданных приложением. Версии ANSI API WinINet продолжают отправлять URL-адрес по сети, как указано приложением, однако версии WinINet Юникод API теперь соответствуют стандарту IDN (RFC3490) для кодирования URL-адресов.

По умолчанию при вводе URL-адреса в качестве параметра Юникода часть узла для прокси-подключений и прямых подключений преобразуется в формат IDN. Приложение может отключить форматирование узла IDN, задав параметр INTERNET_OPTION_IDN . Преобразование узла IDN можно включить только для прямых подключений или прокси-подключений с помощью флагов INTERNET_FLAG_IDN_DIRECT или INTERNET_FLAG_IDN_PROXY с INTERNET_OPTION_IDN.

В следующем примере кода показано, как отключить преобразование узла IDN как для прокси-сервера, так и для прямых подключений.

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

Если форматирование узла IDN отключено, приложение может указать нужную кодовую страницу с помощью INTERNET_OPTION_CODEPAGE.

В следующем примере кода показано, как указать кодовую страницу на японском языке.

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

Часть пути URL-адреса по умолчанию закодирована в кодировке UTF8, а остальные сегменты URL-адреса( запрос или фрагмент) преобразуются в системную кодовую страницу по умолчанию (CP_ACP).

В следующем примере показано, как указать кодовую страницу корейского языка для части пути URL-адреса.

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

В следующей таблице определены параметры, поддерживающие IDN. Дополнительные сведения см. в разделе Флаги параметров .

Параметр Описание
INTERNET_OPTION_CODEPAGE Этот параметр задается для запроса или дескриптора подключения, чтобы указать схему кодирования кодовой страницы для хост-части URL-адреса. Этот параметр игнорируется, если idn включен.
INTERNET_OPTION_CODEPAGE_PATH Этот параметр задается для запроса, или дескриптор подключения включает указанную схему кодирования для части пути URL-адреса. По умолчанию часть пути URL-адреса имеет кодировку UTF8.
INTERNET_OPTION_CODEPAGE_EXTRA Установка этого параметра для запроса или дескриптора подключения включает указанную схему кодирования для дополнительной части URL-адреса. По умолчанию дополнительная часть URL-адреса кодируется на системной кодовой странице по умолчанию (CP_ACP).
INTERNET_OPTION_IDN Этот параметр можно использовать для запроса или дескриптора подключения, чтобы включить или отключить преобразование узла IDN. Если IDN отключен, WinINet использует системную кодовую страницу по умолчанию для кодирования части URL-адреса узла или центра.

 

Примечание

WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).