Fungsi InternetCanonicalizeUrlW (wininet.h)
Kanonikalisasi URL, yang mencakup konversi karakter dan spasi yang tidak aman menjadi urutan escape.
Sintaks
BOOL InternetCanonicalizeUrlW(
[in] LPCWSTR lpszUrl,
[out] LPWSTR lpszBuffer,
[in, out] LPDWORD lpdwBufferLength,
[in] DWORD dwFlags
);
Parameter
[in] lpszUrl
Penunjuk ke string yang berisi URL untuk dikanonisisasi.
[out] lpszBuffer
Penunjuk ke buffer yang menerima URL kanonis yang dihasilkan.
[in, out] lpdwBufferLength
Penunjuk ke variabel yang berisi ukuran, dalam karakter, dari buffer lpszBuffer . Jika fungsi berhasil, parameter ini menerima jumlah karakter yang benar-benar disalin ke buffer lpszBuffer , yang tidak menyertakan karakter null yang mengakhiri. Jika fungsi gagal, parameter ini menerima ukuran buffer yang diperlukan, dalam karakter, yang mencakup karakter null yang mengakhiri.
[in] dwFlags
Mengontrol kanonisisasi. Jika tidak ada bendera yang ditentukan, fungsi mengonversi semua karakter dan urutan meta yang tidak aman (seperti .,\ .., dan ...) untuk meloloskan urutan. Parameter ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Tidak mengodekan atau mendekode karakter setelah "#" atau "?", dan tidak menghapus spasi kosong berikutnya setelah "?". Jika nilai ini tidak ditentukan, seluruh URL dikodekan dan spasi kosong berikutnya dihapus. |
|
Mengonversi semua urutan %XX ke karakter, termasuk urutan escape, sebelum URL diurai. |
|
Mengodekan tanda persen yang ditemui. Secara default, tanda persen tidak dikodekan. Nilai ini tersedia di Microsoft Internet Explorer 5 dan yang lebih baru. |
|
Mengodekan spasi saja. |
|
Tidak mengonversi karakter yang tidak aman untuk meloloskan urutan. |
|
Tidak menghapus urutan meta (seperti "." dan "..") dari URL. |
Nilai kembali
Mengembalikan TRUE jika berhasil, atau FALSE sebaliknya. Untuk mendapatkan informasi kesalahan yang diperluas, panggil fungsi GetLastError . Kemungkinan kesalahan termasuk yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
URL tidak dapat dikanonik. |
|
URL kanonis terlalu besar agar pas dengan buffer yang disediakan. Parameter lpdwBufferLength diatur ke ukuran, dalam byte, dari buffer yang diperlukan untuk menahan URL kanonis. |
|
Format URL tidak valid. |
|
Ada parameter string, buffer, ukuran buffer, atau bendera yang tidak valid. |
Keterangan
Di Internet Explorer 4.0 dan yang lebih baru, InternetCanonicalizeUrl selalu berfungsi seolah-olah bendera ICU_BROWSER_MODE diatur. Aplikasi klien yang harus mengkanonikalisasi seluruh URL harus menggunakan CoInternetParseUrl (dengan tindakan PARSE_CANONICALIZE dan bendera URL_ESCAPE_UNSAFE) atau UrlCanonicalize.
InternetCanonicalizeUrl selalu mengodekan secara default, meskipun bendera ICU_DECODE telah ditentukan. Untuk mendekode tanpa pengodean ulang, gunakan ICU_NO_ENCODE ICU_DECODE | . Jika bendera ICU_DECODE digunakan tanpa ICU_NO_ENCODE, URL didekodekan sebelum diurai; karakter yang tidak aman kemudian dikodekan ulang setelah penguraian. Fungsi ini menangani skema protokol arbitrer, tetapi untuk melakukannya, fungsi ini harus membuat inferensi dari set karakter yang tidak aman.
Aplikasi yang memanggil InternetCanonicalizeUrl saat menggunakan Internet Explorer 3.0 (atau ketika mengatur bendera ICU_ENCODE_PERCENT untuk Internet Explorer 5 dan yang lebih baru) harus melacak penggunaan fungsi ini pada URL tertentu. Jika karakter yang tidak aman dalam URL telah dikonversi ke urutan escape, menggunakan InternetCanonicalizeUrl lagi pada URL (tanpa bendera) menyebabkan urutan escape dikonversi ke urutan escape lain. Misalnya, spasi kosong dalam URL akan dikonversi ke urutan escape %20. Memanggil InternetCanonicalizeUrl lagi pada URL akan menyebabkan urutan escape %20 dikonversi ke urutan escape %2520, karena tanda % adalah karakter tidak aman yang dicadangkan untuk urutan escape dan digantikan oleh fungsi dengan urutan escape %25.
Seperti semua aspek lain dari Api WinINet, fungsi ini tidak dapat dipanggil dengan aman dari dalam DllMain atau konstruktor dan destruktor objek global.
Catatan
Header wininet.h mendefinisikan InternetCanonicalizeUrl sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wininet.h |
Pustaka | Wininet.lib |
DLL | Wininet.dll |