Pengenkode URL
Konversi teks ke format yang aman untuk URL dengan mengenkode karakter khusus.
Masukkan teks untuk dienkode:
Cara menggunakan URL Encoder / Decoder
- 1
Masukkan teks atau URL Anda
Tempel teks yang ingin Anda enkode atau string ber-URL-encode yang ingin Anda dekode ke dalam kotak input.
- 2
Pilih encode atau decode
Pilih Encode untuk mengonversi teks ke format aman-URL, atau Decode untuk mengubah teks ber-percent-encode kembali menjadi normal.
- 3
Jalankan konversi
Proses input untuk langsung mengubahnya ke arah yang dipilih.
- 4
Salin hasilnya
Salin output yang telah di-encode atau di-decode untuk digunakan dalam tautan, query string, atau permintaan API.
Pengkodean URL dan Percent-Encoding Dijelaskan
Apa itu pengkodean URL
Pengkodean URL, yang lebih tepat disebut percent-encoding, adalah mekanisme yang memungkinkan sebuah URL membawa karakter yang seharusnya tidak dapat ia representasikan. Sebuah URL dibatasi pada sekumpulan kecil karakter ASCII, dan beberapa di antaranya memiliki makna struktural khusus. Percent-encoding mengganti karakter bermasalah apa pun dengan sebuah tanda persen diikuti dua digit heksadesimal dari nilai bitanya, sehingga spasi menjadi %20 dan tanda pagar menjadi %23.
Aturannya didefinisikan dalam RFC 3986, standar yang mengatur sintaks URI. Tujuannya sederhana: memastikan sebuah nilai yang ditempatkan di dalam URL ditransmisikan dan diurai persis seperti yang dimaksudkan, tanpa karakter nyasar yang disalahartikan sebagai pembatas atau dibuang oleh perangkat lunak di sepanjang jalan.
Karakter reserved versus unreserved
RFC 3986 membagi karakter ke dalam beberapa kelompok. Himpunan unreserved selalu aman dan tidak pernah dikodekan: huruf A-Z dan a-z, angka 0-9, serta empat tanda yaitu tanda hubung (-), titik (.), garis bawah (_), dan tilde (~). Semua ini lolos tanpa diubah karena tidak membawa makna struktural dan sah di mana pun dalam sebuah URL.
Himpunan reserved adalah tanda baca yang membatasi bagian-bagian sebuah URL: pembatas umum : / ? # [ ] @ dan subpembatas ! $ dan & ' ( ) * + , ; =. Karakter-karakter ini sah sebagai pemisah, tetapi ketika mereka muncul di dalam sebuah nilai alih-alih sebagai pembatas, mereka harus di-percent-encode agar pengurai tidak salah membacanya. Sebagai contoh, ampersan di dalam sebuah nilai query harus menjadi %26, jika tidak ia akan dibaca sebagai awal parameter baru.
Basis bita UTF-8
Percent-encoding bekerja pada bita, bukan pada karakter secara langsung, dan URL modern menggunakan UTF-8 sebagai sumber bitanya. Sebuah karakter ASCII adalah satu bita, jadi karakter ASCII terkode adalah satu percent-escape. Sebuah karakter di luar ASCII pertama-tama dinyatakan sebagai urutan bita UTF-8-nya, lalu setiap bita di-percent-encode secara terpisah, menghasilkan satu escape per bita.
Huruf beraksen é adalah ilustrasi bakunya. Dalam UTF-8 ia adalah dua bita 0xC3 dan 0xA9, jadi ia di-percent-encode menjadi %C3%A9 — dua escape untuk satu karakter yang terlihat. Tanda euro, tiga bita dalam UTF-8, menjadi %E2%82%AC. Inilah mengapa teks non-Latin mengembang begitu banyak saat dikodekan: setiap karakter dapat berubah menjadi dua, tiga, atau empat percent-escape bergantung pada panjang UTF-8-nya.
Contoh terselesaikan: mengkodekan sebuah nilai pencarian
Misalkan Anda ingin memasukkan frasa "Q&A: cats + dogs" ke dalam sebuah query string. Huruf, angka, dan teks di sekitar titik dua tetap sebagai kata, tetapi karakter yang tidak aman dan yang reserved menjadi di-escape. Spasi menjadi %20, ampersan menjadi %26, titik dua menjadi %3A, dan tanda plus menjadi %2B karena plus harfiah jika tidak akan dibaca sebagai spasi dalam data formulir.
Hasilnya adalah Q%26A%3A%20cats%20%2B%20dogs. Dimasukkan ke dalam sebuah tautan sebagai ?q=Q%26A%3A%20cats%20%2B%20dogs, server mendekodekannya kembali menjadi frasa asli yang persis. Perhatikan bahwa setiap karakter reserved yang dimaksudkan sebagai data, bukan sebagai pembatas, harus dikodekan agar bertahan dalam perjalanan.
Spasi: %20 versus tanda plus
Spasi memiliki keanehan yang terkenal. Dalam jalur dan sebagian besar URL, spasi dikodekan sebagai %20. Tetapi dalam format application/x-www-form-urlencoded yang dipakai oleh pengiriman formulir HTML dan banyak query string, spasi secara tradisional dikodekan sebagai tanda plus (+). Kedua konvensi ini sama-sama aktif digunakan, yang merupakan sumber kebingungan yang sering muncul.
Konsekuensi praktisnya adalah tanda plus harfiah dalam data bergaya-formulir harus dikodekan sendiri sebagai %2B, agar tidak disalahartikan sebagai spasi. Saat Anda mendekode, Anda harus tahu konvensi mana yang menghasilkan string itu: sebuah plus dalam nilai formulir berarti spasi, sedangkan plus di tempat lain biasanya berarti plus harfiah. Alat ini menangani percent-encoding standar agar nilai Anda bolak-balik dengan bersih.
Mengkodekan seluruh URL versus sebuah nilai tunggal
JavaScript menyediakan dua fungsi yang memetakan ke dua pekerjaan yang berbeda, dan memilih yang keliru adalah bug klasik. encodeURI dimaksudkan untuk seluruh URL: ia membiarkan karakter struktural : / ? # & = tetap utuh agar URL terus berfungsi, hanya mengkodekan karakter yang jelas-jelas ilegal seperti spasi. encodeURIComponent dimaksudkan untuk sepotong data tunggal, seperti satu nilai query atau segmen jalur: ia juga meng-escape pembatas reserved, sehingga garis miring atau ampersan yang tertanam tidak dapat merusak URL di sekitarnya.
Alat ini melakukan pengkodean bergaya-komponen — perilaku encodeURIComponent — yang merupakan default aman untuk menyisipkan nilai tak tepercaya di antara pembatas yang Anda kendalikan: ia juga meng-escape pembatas reserved, sehingga garis miring atau ampersan yang tertanam tidak dapat merusak URL di sekitarnya. Imbangannya adalah Anda sebaiknya tidak menempel alamat lengkap di sini, karena ia juga akan meng-escape karakter struktural : / ? # & = dan merusak tautannya. Untuk mengkodekan seluruh URL, kodekan setiap nilai atau segmen jalur secara individual lalu rakit sendiri alamat jadinya.
Kesalahan pengkodean ganda
Pengkodean ganda adalah bug percent-encoding yang paling umum. Ini terjadi ketika teks yang sudah terkode dikodekan untuk kedua kalinya. Pemicunya adalah tanda persen itu sendiri: persen adalah karakter reserved, jadi mengkodekannya mengubah %20 menjadi %2520, karena % di depan menjadi %25 dan 20 tetap. Sebuah nilai yang telah dikodekan dua kali akan menampilkan urutan escape harfiah seperti %2520 kepada pengguna akhir alih-alih spasi yang dimaksudkan.
Hindari itu dengan mengkodekan tepat sekali, pada saat Anda membangun URL, dan dengan tidak pernah menjalankan kembali string yang sudah mengandung percent-escape melalui pengkode. Jika Anda melihat %25 diikuti oleh sesuatu yang tampak seperti escape lain, Anda hampir pasti sedang melihat data yang terkode ganda, dan perbaikannya adalah mendekodekannya satu kali ekstra atau menghapus langkah pengkodean yang berlebihan dalam kode Anda.
Di mana Anda akan menggunakannya
Percent-encoding ada di mana pun sebuah nilai bepergian di dalam URL. Membangun query string untuk pencarian dan penyaringan, menyusun tautan yang berisi teks yang dimasukkan pengguna, mengoper parameter ke REST API, menyematkan target pengalihan di dalam parameter return_url, serta menandatangani permintaan yang harus cocok bita demi bita semuanya bergantung pada pengkodean yang benar. Server dan kerangka kerja web mendekodekan URL yang masuk secara otomatis, jadi bentuk terkode biasanya adalah sesuatu yang Anda hasilkan alih-alih baca.
Sebuah kebiasaan yang berguna adalah mengkodekan setiap potongan dinamis secara terpisah sambil Anda merakit sebuah URL, alih-alih mengkodekan string jadinya dalam satu pukulan. Itu menjaga pembatas Anda tetap utuh sambil membuat setiap nilai aman, dan ia mengelak baik dari kekurangan-pengkodean yang merusak tautan maupun dari pengkodean ganda yang merusaknya.
Pertanyaan yang sering diajukan
Apa sebenarnya yang dilakukan URL encoding?
Bisakah alat ini meng-encode sekaligus men-decode?
Apakah alat ini menangani karakter khusus dan bahasa lain?
Apa perbedaan antara meng-encode URL penuh dan satu nilai tunggal?
Apakah data saya privat dan apakah alat ini gratis?
Alat terkait
Lanjutkan dengan alat praktis ini