WinINet 中的 IDN 支援
從 Windows Server 2008 和 Windows Vista 開始,Unicode URL 的主機部分會轉換成國際化功能變數名稱 (IDN) 。 應用程式所設定的組態也可以修改 Unicode URL 編碼的個別部分。 WinINet API 的 ANSI 版本會繼續透過應用程式輸入的線路傳送 URL,不過 WinINet Unicode 版本的 API 現在符合 IDN 標準 (RFC3490) URL 編碼。
根據預設,當 URL 輸入為 Unicode 參數時,Proxy 和直接連線的主機部分會轉換成 IDN 格式。 應用程式可以選擇藉由設定 [INTERNET_OPTION_IDN ] 選項來停用 IDN 主機格式設定。 只有使用INTERNET_FLAG_IDN_DIRECT或具有 INTERNET_OPTION_IDN 的 INTERNET_FLAG_IDN_PROXY旗標,才能在直接或 Proxy 連線上啟用 IDN 主機轉換。
下列程式碼範例示範如何停用 Proxy 和直接連線的 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 Services (WinHTTP) 。