Bagikan melalui


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
ICU_BROWSER_MODE
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.
ICU_DECODE
Mengonversi semua urutan %XX ke karakter, termasuk urutan escape, sebelum URL diurai.
ICU_ENCODE_PERCENT
Mengodekan tanda persen yang ditemui. Secara default, tanda persen tidak dikodekan. Nilai ini tersedia di Microsoft Internet Explorer 5 dan yang lebih baru.
ICU_ENCODE_SPACES_ONLY
Mengodekan spasi saja.
ICU_NO_ENCODE
Tidak mengonversi karakter yang tidak aman untuk meloloskan urutan.
ICU_NO_META
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
ERROR_BAD_PATHNAME
URL tidak dapat dikanonik.
ERROR_INSUFFICIENT_BUFFER
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.
ERROR_INTERNET_INVALID_URL
Format URL tidak valid.
ERROR_INVALID_PARAMETER
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 WinINet tidak mendukung implementasi server. Selain itu, itu tidak boleh digunakan dari layanan. Untuk implementasi atau layanan server, gunakan Microsoft Windows HTTP Services (WinHTTP).
 

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

Lihat juga

Menangani Pencari Sumber Daya Seragam

Fungsi WinINet