UrlCanonicalizeW 函式 (shlwapi.h)
將 URL 字串轉換成標準格式。
語法
LWSTDAPI UrlCanonicalizeW(
[in] PCWSTR pszUrl,
[out] PWSTR pszCanonicalized,
[in, out] DWORD *pcchCanonicalized,
DWORD dwFlags
);
參數
[in] pszUrl
類型:PCTSTR
包含 URL 字串之最大長度之 null 終止字串的指標INTERNET_MAX_URL_LENGTH。 如果字串未參考檔案,它必須包含有效的配置,例如 「http://」。。
[out] pszCanonicalized
類型:PTSTR
緩衝區的指標,當此函式成功傳回時,會以 Null 終止字串的形式接收已轉換的 URL。
[in, out] pcchCanonicalized
類型:DWORD*
專案的值指標會設定為 pszCanonicalized 緩衝區中
dwFlags
類型:DWORD
指定 URL 如何轉換成標準格式的旗標。 可以合併下列旗標。
URL_UNESCAPE(0x10000000)
取消逸出 URL 包含的任何逸出序列,但有兩個例外狀況。 “?” 和 “#” 的逸出序列不會解除逸出。 如果同時設定其中一個URL_ESCAPE_XXX旗標,則兩個URL會先取消逸出,然後合併,然後逸出。
URL_ESCAPE_UNSAFE (0x20000000)
將 unsafe 字元取代為逸出序列。 不安全字元是因特網傳輸期間可能改變的字元,包括 (<、>、“、#、{、}、|、^、[、] 和 ') 字元。 此旗標適用於所有 URL,包括不透明 URL。
URL_PLUGGABLE_PROTOCOL (0x40000000)
根據 W3C 規格,結合 URL 與用戶端定義的插入式通訊協定。 此旗標不適用於標準通訊協定,例如 ftp、HTTP、gopher 等等。 如果設定此旗標,UrlCombine 不會簡化 URL,因此不需要也設定 URL_DONT_SIMPLIFY。
URL_ESCAPE_SPACES_ONLY(0x04000000)
將空格取代為逸出序列。 此旗標的優先順序高於 URL_ESCAPE_UNSAFE,但不適用於不透明的 URL。
URL_DONT_SIMPLIFY (0x08000000)
處理 “/./” 和 “/.。/“ 在 URL 字串中做為常值字元,而不是導覽的速記。 如需進一步的討論,請參閱。
URL_NO_META (0x08000000)
定義為與 URL_DONT_SIMPLIFY相同。
URL_ESCAPE_PERCENT (0x00001000)
將任何出現的 「%」 轉換為其逸出序列。
URL_ESCAPE_AS_UTF8 (0x00040000)
Windows 7 和更新版本。 將所有非 ASCII 字元的百分比編碼為其 UTF-8 對等專案。
傳回值
類型:HRESULT
如果函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
言論
此函式會執行這類工作,例如將不安全字元取代為其逸出序列,以及折疊序列,例如 「.....」。。
如果 URL 字串包含 「/.。/“ 或 ”/./“,UrlCanonicalize 會將字元視為表示 URL 階層中的導覽。 函式會在合併 URL 之前簡化 URL。 例如 「hello/cruel/.。/world“ 已簡化為 ”/hello/world“。 在這些情況下,會發生此預設行為的例外狀況:
- 如果在 dwFlags中設定 URL_DONT_SIMPLIFY 旗標,則函式不會簡化 URL。 在此情況下,“/hello/cruel/.。/world“ 已保留為 。
- 如果為 “/../“ 或 ”/./“ 是路徑中的第一個區段(例如,”http://domain/../path1/path2/file.htm“),UrlCanonicalize 輸出路徑的方式與輸入完全相同。
注意
shlwapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 UrlCanonicalize 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional、Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | shlwapi.h |
連結庫 | Shlwapi.lib |
DLL | Shlwapi.dll 版 (5.0 版或更新版本) |