Поддержка 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).