Langsung ke konten utama
PulsarKit

URL encoder dan decoder

Encode teks untuk URL dengan percent-encoding atau decode kembali. Tersedia tiga skema yang hasilnya memang berbeda, dan daftar diproses baris per baris.

Letakkan file di sini

.txt · hingga 5 MB

Cara encode dan decode URL

  1. 1

    Tempel teks atau daftar URL

    Satu nilai atau lima puluh, satu per baris. File .txt juga bisa, dengan encoding UTF-8 atau Windows-1251.

  2. 2

    Pilih encode atau decode, lalu skemanya

    Skema komponen (encodeURIComponent) untuk satu nilai, URI lengkap (encodeURI) untuk seluruh alamat, dan form-urlencoded untuk body POST.

  3. 3

    Salin hasilnya

    Salin langsung atau unduh sebagai file teks; struktur baris tetap terjaga dengan cara mana pun.

Tiga skema, dan mengapa salah pilih merusak tautan

Skema komponen mengubah semua karakter selain karakter unreserved menjadi kode persen, termasuk : / ? # & =. Itu benar untuk satu nilai yang masuk ke query string, tetapi salah untuk alamat lengkap: jika https://example.com/a?b=1 diproses sebagai komponen, setiap karakter struktural berubah menjadi urutan persen, dan hasilnya bukan lagi URL. Skema URI lengkap membiarkan karakter struktural itu dan hanya mengubah spasi serta karakter non-ASCII, yang memang Anda perlukan jika input sudah berupa alamat lengkap. Form-urlencoded adalah encoding komponen ditambah satu penggantian: spasi menjadi tanda plus, sesuai aturan format yang dipakai formulir HTML untuk mengirim data.

Tanda plus memang ambigu

Di body form-urlencoded, + berarti spasi. Di segmen path, + berarti tanda plus biasa. Saat decode, keduanya tidak bisa dibedakan hanya dari teksnya, karena itu ini dijadikan pengaturan, bukan tebakan: pilih form-urlencoded atau aktifkan opsi + sebagai spasi, dan tanda plus menjadi spasi; biarkan opsi itu mati, dan tanda plus tetap. Saat encode ada jebakan serupa dari arah sebaliknya: tanda + di input harus menjadi %2B sebelum spasi diubah menjadi tanda plus. Jika tidak, setelah bolak-balik lewat encoder, tanda itu berubah menjadi spasi tanpa disadari. Urutan itu sudah dipastikan di sini, jadi encode lalu decode selalu mengembalikan persis teks awal Anda.

Kode persen yang rusak, ditunjukkan dengan tepat

Tanda % tunggal yang tidak diikuti dua digit heksadesimal, atau urutan multi-byte yang terpotong seperti %E0%A4, membuat decode gagal, dan decoder bawaan browser memunculkan exception tanpa menyebut lokasinya. Mode ketat melaporkan baris dan posisi masalah pertama, jadi Anda bisa menemukannya di daftar yang panjang. Mode longgar memperlakukan % tanpa pasangan sebagai tanda persen biasa dan mengembalikan sisanya, yang biasanya Anda inginkan jika input berupa baris log, bukan URL sungguhan. Pemrosesan baris per baris penting karena alasan yang sama: satu entri rusak di daftar berisi lima puluh langsung menunjukkan entri mana yang bermasalah.

Teks tetap di tab ini

Konversi memakai fungsi encoding bawaan browser dan berjalan sepenuhnya secara lokal. Query string sering membawa token dan pengenal, jadi perlu dikatakan dengan jelas: tidak ada yang dikirim ke server, dicatat, atau disimpan.

Pertanyaan yang sering diajukan

Apa beda encodeURI dan encodeURIComponent?

encodeURIComponent juga mengubah karakter struktural : / ? # & = menjadi kode persen, dan itu tepat untuk satu nilai di dalam query string. encodeURI membiarkannya utuh, dan itu tepat jika input berupa alamat lengkap yang hanya perlu dibuat aman.

Mengapa + terkadang berarti spasi?

Karena format form-urlencoded yang dipakai formulir HTML untuk mengirim data mendefinisikannya begitu. Di bagian URL lainnya, + adalah tanda plus biasa. Karena teksnya sendiri tidak menunjukkan aturan mana yang berlaku, decode menyediakannya sebagai pilihan yang eksplisit.

Apa yang harus dilakukan jika muncul kesalahan percent-encoding tidak valid?

Pesannya menyebut baris dan posisi kode persen rusak yang pertama, biasanya tanda % tunggal yang seharusnya %25, atau urutan multi-byte yang terpotong. Perbaiki bagian itu, atau beralih ke decode mode longgar untuk mendapatkan kembali sisa teksnya.

Apakah bisa untuk daftar URL?

Bisa, dan itulah mode default. Setiap baris dikonversi terpisah, baris kosong tetap kosong, dan jeda baris tidak pernah diubah menjadi kode persen. Jadi yang masuk berupa daftar, yang keluar juga daftar.

Apakah jeda baris dipertahankan?

Ya, dalam mode per baris, termasuk baris baru di akhir teks. Matikan mode per baris, dan seluruh input diperlakukan sebagai satu nilai, sehingga jeda barisnya menjadi %0A di dalam hasil.

Bagaimana cara decode huruf Sirilik di alamat URL?

Tempel alamatnya dan decode dengan skema komponen. UTF-8 dalam percent-encoding seperti %D0%BF%D1%80%D0%B8 dikembalikan menjadi huruf aslinya; konversi bolak-balik bersifat lossless di kedua arah.

Apakah teks saya dikirim ke server?

Tidak. Encode maupun decode memakai fungsi bawaan browser, berjalan secara lokal di tab ini, tanpa server dan tanpa penyimpanan.

Alat terkait