UrlCanonicalizeA 函式 (shlwapi.h)

將 URL 字串轉換成標準格式。

語法

LWSTDAPI UrlCanonicalizeA(
  [in]      PCSTR pszUrl,
  [out]     PSTR  pszCanonicalized,
  [in, out] DWORD *pcchCanonicalized,
            DWORD dwFlags
);

參數

[in] pszUrl

類型: PCTSTR

包含 URL 字串的 null 終止字串指標,長度上限為INTERNET_MAX_URL_LENGTH。 若字串並非指向檔案,則必須包含有效的配置 (例如 "http://")。

[out] pszCanonicalized

類型: PTSTR

緩衝區的指標,當此函式成功傳回時,會將已轉換的 URL 接收為 Null 終止字串。

[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/quiet/.。/world「 已簡化為 」/hello/world」。 在此預設行為的例外狀況發生于下列情況下:

  • 如果 URL_DONT_SIMPLIFY 旗標是在 dwFlags中設定,則函式不會簡化 URL。 在此案例中為 「/hello/inpage/../world「 會保持原樣。
  • 如果為 「/../「 或 」/./「 是路徑中的第一個區段 (,例如」 http://domain/../path1/path2/file.htm 「) , UrlCanonicalize 會輸出與輸入完全相同的路徑。

注意

shlwapi.h 標頭會將 UrlCanonicalize 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

   
最低支援的用戶端 Windows 2000 專業版、Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 shlwapi.h
程式庫 Shlwapi.lib
Dll Shlwapi.dll (5.0 版或更新版本)

另請參閱

處理統一資源定位器