InternetCanonicalizeUrlA 函式 (wininet.h)
標準化 URL,包括將不安全的字元和空格轉換成逸出序列。
語法
BOOL InternetCanonicalizeUrlA(
[in] LPCSTR lpszUrl,
[out] LPSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
參數
[in] lpszUrl
字串的指標,其中包含要標準化的 URL。
[out] lpszBuffer
接收所產生標準 URL 之緩衝區的指標。
[in, out] lpdwBufferLength
變數的指標,其中包含 lpszBuffer 緩衝區的大小,以字元為單位。 如果函式成功,此參數會接收實際複製到 lpszBuffer 緩衝區的字元數,但不包含終止的 Null 字元。 如果函式失敗,此參數會以字元接收緩衝區的必要大小,其中包含終止的 Null 字元。
[in] dwFlags
控制標準化。 如果未指定任何旗標,函式會將所有不安全字元和中繼序列 (,例如 .,\.. 和 ...) 轉換為逸出序列。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
不會在 「#」 或 「?」之後編碼或解碼字元,而且不會移除 「?」之後的尾端空白字元。 如果未指定此值,則會編碼整個 URL,並移除尾端空白字元。 |
|
在剖析 URL 之前,將所有 %XX 序列轉換成字元,包括逸出序列。 |
|
編碼所遇到的任何百分比符號。 根據預設,百分比符號不會編碼。 此值可在 Microsoft Internet Explorer 5 和更新版本中取得。 |
|
僅編碼空格。 |
|
不會將不安全的字元轉換成逸出序列。 |
|
不會移除 (例如 「.」 和 「.」 的中繼序列。從 URL ) 。 |
傳回值
如果成功,則傳回 TRUE ,否則傳回 FALSE 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError 函 式。 可能的錯誤包括下列專案。
傳回碼 | 描述 |
---|---|
|
無法標準化 URL。 |
|
標準 URL 太大,無法容納提供的緩衝區。 lpdwBufferLength參數會設定為保存標準 URL 所需的緩衝區大小,以位元組為單位。 |
|
URL 的格式無效。 |
|
字串、緩衝區、緩衝區大小或旗標參數無效。 |
備註
在 Internet Explorer 4.0 和更新版本中, InternetCanonicalizeUrl 一律會像設定 ICU_BROWSER_MODE 旗標一樣運作。 必須正式化整個 URL 的用戶端應用程式應該使用 CoInternetParseUrl (搭配動作 PARSE_CANONICALIZE 和旗標 URL_ESCAPE_UNSAFE) 或 UrlCanonicalize。
InternetCanonicalizeUrl 預設一律會編碼,即使已指定 ICU_DECODE 旗標也一樣。 若要在不重新編碼的情況下解碼,請使用ICU_DECODE | ICU_NO_ENCODE。 如果在不使用ICU_NO_ENCODE的情況下使用ICU_DECODE旗標,則會在剖析之前解碼 URL;然後,不安全的字元會在剖析之後重新編碼。 此函式會處理任意通訊協定配置,但若要這樣做,它必須從不安全的字元集進行推斷。
使用 Internet Explorer 3.0 (或設定 Internet Explorer 5 和更新) 版本的ICU_ENCODE_PERCENT旗標時,呼叫InternetCanonicalizeUrl的應用程式應該追蹤特定 URL 上的此函式使用方式。 如果 URL 中的不安全字元已轉換成逸出序列,請在 URL (上再次使用 InternetCanonicalizeUrl ,而沒有旗標) 會導致逸出序列轉換成另一個逸出序列。 例如,URL 中的空格會轉換成逸出序列 %20。 在 URL 上再次呼叫 InternetCanonicalizeUrl 會導致逸出序列 %20 轉換成逸出序列 %2520,因為 % 符號是保留給逸出序列的不安全字元,而且會由函式取代為逸出序列 %25。
就像 WinINet API 所有其他層面一樣,您無法從 DllMain 或全域物件的建構函式和解構函式安全地呼叫此函式。
注意
wininet.h 標頭會將 InternetCanonicalizeUrl 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | wininet.h |
程式庫 | Wininet.lib |
Dll | Wininet.dll |