ByteCompress

Pengkode URL

Mengkodekan karakter khusus dalam URL atau komponen URI individu sehingga aman untuk ditransmisikan dalam permintaan HTTP, string kueri, dan data formulir. Mengikuti RFC 3986.

0 chars
FreeClient-sideNo signup

Karakter spasi dalam string kueri URL secara diam-diam merusak permintaan. RFC 3986 (Pengidentifikasi Sumber Seragam: Sintaks Umum) mendefinisikan karakter mana yang aman dalam URL dan mana yang harus dikodekan persentase. Pengkodean persentase menggantikan setiap byte yang tidak aman dengan % diikuti oleh dua digit heksadesimal huruf besar. Pengkode ini berbasis browser menerapkan RFC 3986 secara instan, tanpa mengirimkan data Anda ke mana pun. Gunakan untuk mengkodekan URL penuh atau nilai parameter kueri individu dan dapatkan output yang sesuai dengan standar setiap saat.

Cara Mengkodekan URL

  1. Tempel URL atau teks ke dalam kolom input.
  2. Pilih mode URL Penuh untuk mengkodekan hanya karakter yang tidak aman, atau mode Komponen untuk mengkodekan semua karakter khusus termasuk & dan =.
  3. Output yang dikodekan persentase muncul di panel hasil.
  4. Salin string yang telah dikodekan untuk digunakan dalam permintaan, kode, atau dokumentasi Anda.

Memahami Pengkodean Persentase

Standar RFC 3986

RFC 3986 (IETF, 2005) mendefinisikan dua kategori karakter dalam URI. Karakter yang tidak terdaftar (A-Z a-z 0-9 - _ . ~) dapat muncul tanpa pengkodean. Karakter yang terdaftar (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) memiliki arti struktural khusus dan mungkin atau mungkin tidak perlu dikodekan tergantung pada konteks. Setiap karakter lain - termasuk spasi, Unicode non-ASCII, dan karakter di luar set ini - harus dikodekan persentase.

encodeURI vs encodeURIComponent

JavaScript menyediakan dua fungsi pengkodean. encodeURI() mengkodekan URL lengkap dan membiarkan karakter yang terdaftar tetap utuh karena mereka berfungsi sebagai struktur. encodeURIComponent() juga mengkodekan karakter struktural, memperlakukannya sebagai data literal - dirancang untuk nama dan nilai parameter kueri individu di mana & dan = akan merusak sintaks URL. Mode URL Penuh alat ini sesuai dengan encodeURI; Mode Komponen sesuai dengan encodeURIComponent.

Contoh

Input

Hello World! @2024

Output (Mode Komponen)

Hello%20World!%20%402024

Spasi dikodekan sebagai %20 (standar RFC 3986); @ menjadi %40. Tanda seru adalah karakter yang tidak terdaftar dalam beberapa konteks dan mungkin atau mungkin tidak dikodekan tergantung pada mode.

Kasus Penggunaan Umum

  • Nilai parameter kueri - Kodekan nilai yang mengandung &, =, atau + sebelum menambahkannya ke URL
  • Kueri mesin pencari - Kodekan input pencarian pengguna sebelum membangun URL pengalihan
  • Konstruksi permintaan API - Kodekan segmen jalur yang mengandung garis miring, spasi, atau karakter khusus
  • Parameter OAuth - String dasar tanda tangan OAuth 1.0 memerlukan pengkodean persentase sesuai RFC 5849

Kesalahan Umum

  • Pengkodean ganda - Jika nilai sudah dikodekan persentase, mengkodekannya lagi akan mengkodekan % itu sendiri, menghasilkan %2520 alih-alih %20
  • Menggunakan mode URL Penuh untuk nilai parameter - Mode URL Penuh membiarkan & dan = tidak terkodekan, merusak sintaks string kueri; gunakan mode Komponen untuk nilai parameter
  • Melupakan karakter non-ASCII - Teks non-ASCII harus dikonversi menjadi byte UTF-8 terlebih dahulu, kemudian setiap byte dikodekan persentase secara terpisah

Untuk membalikkan proses, gunakan Decoder URL. Untuk data biner yang diangkut dalam parameter kueri URL, pertama-tama kodekan dengan Pengkode Base64 dalam mode aman URL, kemudian output sudah aman URL tanpa pengkodean persentase tambahan.

Pertanyaan Umum

Apa perbedaan antara pengkodean URL dan pengkodean Base64?

Pengkodean persentase menggantikan karakter yang tidak aman dengan %XX urutan hex sambil mempertahankan karakter yang aman apa adanya, sehingga panjang output mirip dengan input. Base64 mengonversi semua data menjadi alfabet 64 karakter, meningkatkan ukuran sebesar 33% tetapi memastikan hasilnya hanya berisi karakter ASCII yang aman. Pengkodean persentase membuat karakter tertentu aman untuk URL; Base64 mengkodekan data biner sembarang sebagai teks.

Kapan saya harus menggunakan encodeURI vs encodeURIComponent di JavaScript?
encodeURI() digunakan untuk mengkodekan URL lengkap - ia mempertahankan karakter struktural seperti : / ? # & =. encodeURIComponent() digunakan untuk mengkodekan nilai individu di dalam URL - ia mengkodekan karakter struktural sehingga diperlakukan sebagai data literal daripada sintaks URL. Jika ragu, gunakan encodeURIComponent() untuk input yang disuplai pengguna.
Mengapa spasi menjadi %20 di beberapa pengkode tetapi + di yang lain?
%20 adalah pengkodean persentase RFC 3986 untuk spasi dan benar untuk segmen jalur URI dan nilai kueri. Tanda + yang mewakili spasi adalah spesifik untuk application/x-www-form-urlencoded (pengiriman formulir HTML), yang lebih awal dari RFC 3986. Keduanya valid dalam konteks masing-masing, tetapi %20 adalah standar universal di luar formulir HTML.
Apakah pengkodean URL berfungsi untuk karakter non-ASCII?

Ya. Karakter non-ASCII pertama-tama dikonversi menjadi byte UTF-8, kemudian setiap byte dikodekan persentase secara terpisah. Karakter ş (U+015F) menjadi %C5%9F. Karakter Cina 中 (U+4E2D) menjadi %E4%B8%AD. Browser dan server modern semuanya mengharapkan pengkodean UTF-8 untuk karakter non-ASCII dalam URL.

Apakah data URL saya dikirim ke server Anda saat saya menggunakan alat ini?

Tidak. Semua pengkodean menggunakan encodeURI() atau encodeURIComponent() yang berjalan secara lokal di browser Anda. URL, parameter kueri, token otentikasi, dan data lain yang Anda tempel tidak pernah dikirim ke server kami.