Enkoder, dekoder, dan pengurai URL

Enkode, dekode, urai URL, dan sunting string kueri.

Mengenkode semuanya kecuali huruf, angka, dan - _ . ! ~ * ' ( ). Pakai untuk satu nilai (encodeURIComponent).

Apa yang dilakukan alat ini

URL hanya dapat membawa sekumpulan kecil karakter polos. Selain itu, seperti spasi, aksen, emoji, atau karakter yang bermakna dalam sintaks URL, ditulis dengan tanda persen dan dua digit heksadesimal untuk setiap byte: spasi adalah %20 dan "é" adalah %C3%A9. Alat ini punya tiga tab. Enkode mengubah teks ke bentuk itu, Dekode mengembalikannya dan menyebut persis escape mana yang rusak, dan Urai URL memecah alamat menjadi skema, pengguna, host, port, jalur, kueri, dan fragmen, mendaftar parameter di editor kecil, dan merakit ulang URL saat Anda mengubahnya.

Tiga jenis pengodean

Teks yang sama dapat dienkode dengan tiga cara, dan salah memilih adalah kesalahan paling umum.

  • Komponen (encodeURIComponent) mengenkode semuanya kecuali huruf, angka, dan - _ . ! ~ * ' ( ). Pakai untuk satu nilai di dalam URL, seperti kata pencarian. a/b?c=d&e menjadi a%2Fb%3Fc%3Dd%26e.
  • URL utuh (encodeURI) juga membiarkan ; , / ? : @ & = + $ #, sehingga alamat lengkap tetap bentuknya: teks yang sama tetap a/b?c=d&e. Ini salah untuk satu nilai, karena & atau = di dalamnya akan dibaca sebagai sintaks.
  • Formulir adalah yang ditulis formulir HTML dan URLSearchParams: spasi menjadi +, dan ~ ! ' ( ) juga dienkode. "café au lait & crème" menjadi caf%C3%A9+au+lait+%26+cr%C3%A8me.

Ketiganya bekerja pada byte UTF-8, jadi emoji (sepasang surrogate di JavaScript) menjadi empat byte: 😀 adalah %F0%9F%98%80. Setengah pasangan surrogate yang tunggal tidak punya bentuk UTF-8, dan fungsi bawaan JavaScript melempar "URI malformed"; alat ini menyebut posisinya.

Mendekode dan yang bisa salah

Dekode membalik setiap escape. Tanda plus hanya berarti spasi pada gaya formulir, dan %2B selalu tanda tambah. Ada dua jenis kegagalan: % tanpa dua digit heks di belakangnya (100%, %zz), dan escape yang tidak membentuk UTF-8 valid, seperti %C3%28. Alat ini menyebut setiap masalah beserta posisinya dan membiarkan bagian yang tidak bisa didekode apa adanya, agar Anda melihat letaknya. Aktifkan "Berhenti di galat pertama" jika Anda lebih suka tidak ada keluaran saat ada masalah. Jika hasilnya masih berisi escape, seperti %2520 menjadi %20, kemungkinan sudah dienkode dua kali dan sebuah tombol mendekodenya lagi.

Mengurai URL

Pengurai lebih dulu memecah alamat persis seperti yang ditulis menurut RFC 3986, lalu membandingkan tiap bagian dengan hasil pengurai URL peramban dan menampilkan selisihnya di bawah: port bawaan 443 dibuang, ./ di jalur diselesaikan, dan host seperti münchen.de ditulis xn--mnchen-3ya.de. Kueri kosong (?) tidak sama dengan tanpa kueri.

Menyunting string kueri

Setiap parameter adalah satu baris berisi nama dan nilai. Urutan dan nama yang sama dipertahankan; parameter yang tidak Anda sentuh kembali persis seperti tertulis, dan yang disunting dienkode dengan %20 atau + jika kueri sudah memakainya. Susun ulang, hapus, atau tambah baris lalu salin URL hasil rakitan. Lihat juga alat Base64 dan pemformat JSON bila parameter berisi data terenkode. Semuanya berjalan di peramban, tidak ada yang diunggah, dan tidak ada tautan yang dibuka untuk Anda.

Pertanyaan yang sering diajukan

Apa beda encodeURI dan encodeURIComponent?

encodeURIComponent mengenkode karakter yang bermakna dalam sintaks URL (/ ? : @ & = + $ # , ;), jadi cocok untuk satu nilai. encodeURI membiarkannya, jadi cocok untuk alamat lengkap. Memakai encodeURI pada satu nilai membuat & atau = di dalamnya mengubah makna URL.

Spasi sebaiknya %20 atau +?

Di jalur, selalu %20. Di kueri, + berarti spasi hanya pada pengodean formulir yang dipakai formulir HTML dan URLSearchParams. Banyak server membaca keduanya, tetapi %20 lebih aman, dan %2B selalu tanda tambah harfiah.

Mengapa teks hasil dekode masih berisi tanda %?

Entah sudah dienkode dua kali (%2520 menjadi %20 lalu spasi), atau tanda persen itu memang asli. Sebuah tombol muncul ketika hasilnya masih berisi escape yang valid.

Apakah URL dikirim ke suatu tempat?

Tidak. Semuanya dihitung di peramban Anda dan tautan ditampilkan sebagai teks, tidak pernah dibuka atau diambil.