InternetCanonicalizeUrlW

URL を正規化する。安全でない文字や空白をエスケープシーケンスに変換する処理を含む。(Unicode)

InternetCanonicalizeUrlW lpszUrl, lpszBuffer, lpdwBufferLength, dwFlags

lpszUrl : [wstr] 正規化する URL を格納した文字列へのポインタ。
lpszBuffer : [wstr] 正規化された URL を受け取るバッファへのポインタ。
lpdwBufferLength : [var] lpszBuffer バッファのサイズ (文字単位) を格納する変数へのポインタ。関数が成功した場合、本パラメータには lpszBuffer バッファに実際にコピーされた文字数 (終端 null 文字を除く) が格納される。関数が失敗した場合、本パラメータには必要なバッファサイズ (文字単位、終端 null 文字を含む) が格納される。
dwFlags : [int] 正規化を制御する。フラグが指定されない場合、関数はすべての安全でない文字とメタシーケンス (\.、\..、\... など) をエスケープシーケンスに変換する。

(プラグイン / モジュール : wininet.dll)

解説

URL を正規化する。安全でない文字や空白をエスケープシーケンスに変換する処理を含む。(Unicode)

[戻り値]
成功した場合は TRUE を、失敗した場合は FALSE を返す。拡張エラー情報を取得するには GetLastError
関数を呼び出す。想定されるエラーには次のものがある。
(以下省略)

[備考]
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 を呼び出すと、%
記号がエスケープシーケンス用に予約された安全でない文字であり関数によって %25 に置き換えられるため、エスケープシーケンス %20
がエスケープシーケンス %2520 に変換される。WinINet API の他のすべての側面と同様に、本関数は DllMain
やグローバルオブジェクトのコンストラクタ・デストラクタの中から安全に呼び出すことはできない。注意: WinINet
はサーバー実装をサポートしていない。さらに、サービスから使用すべきでもない。サーバー実装やサービスでは Microsoft Windows
HTTP Services (WinHTTP) を使用すること。
> [!NOTE] > wininet.h ヘッダーは InternetCanonicalizeUrl
をエイリアスとして定義しており、UNICODE プリプロセッサ定数の定義に基づいて本関数の ANSI 版または Unicode
版を自動的に選択する。エンコーディング中立のエイリアスとエンコーディング中立でないコードを混在させると、コンパイルエラーや実行時エラーの原因となるミスマッチが発生する可能性がある。詳細は
[Conventions for Function
Prototypes](/windows/win32/intl/conventions-for-function-prototypes)
を参照のこと。

情報

プラグイン / モジュールwininet.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の wininet.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_wininet_gen2.hs