共用方式為


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)