Menampilkan dalam Bahasa Indonesia Ganti ke Inggris

Encoder & Decoder URL

Percent-encode atau decode string untuk penggunaan aman di URL, parameter query, dan segmen path.

  1. Tempel string yang ingin Anda encode (atau decode) ke kotak di atas.
  2. Pilih Komponen untuk satu nilai query atau segmen path, atau URL penuh untuk seluruh URL yang hanya memiliki beberapa karakter tidak aman.
  3. Klik Encode atau Decode. Output menggantikan input di tempat.
  4. Salin hasilnya, atau klik Bersihkan untuk mulai lagi.
Apa fungsinya?

URL / percent-encoding mengganti karakter yang tidak aman atau ambigu dalam URL dengan % diikuti oleh nilai byte UTF-8 mereka dalam hex. Mode Komponen menggunakan encodeURIComponent() dan meng-encode setiap karakter yang dicadangkan — benar untuk nilai yang Anda sematkan di query string atau path. Mode URL penuh menggunakan encodeURI(), yang mempertahankan karakter struktural URL seperti :/?#&=.

Contoh

Input:

hello world & café / 日本語

Di-encode sebagai Komponen:

hello%20world%20%26%20caf%C3%A9%20%2F%20%E6%97%A5%E6%9C%AC%E8%AA%9E

Di-encode sebagai URL penuh:

hello%20world%20&%20caf%C3%A9%20/%20%E6%97%A5%E6%9C%AC%E8%AA%9E

Perhatikan bahwa URL penuh membiarkan & dan / sendirian karena keduanya memiliki makna struktural dalam URL.

Kesalahan umum dan jebakan

Sebagian besar masalah encoding berasal dari memilih mode yang salah atau menjalankan alat dua kali pada input yang sama. Item di bawah mencakup kasus yang paling sering kami lihat.

  • Menggunakan encodeURI untuk nilai query. encodeURI("a&b=c") menghasilkan a&b=c (tidak berubah), yang merusak query string. Gunakan mode Komponen (encodeURIComponent) untuk nilai.
  • Double-encoding. Meng-encode hello%20world kedua kalinya menghasilkan hello%2520world. Decode dulu atau lewati satu lapisan.
  • Melupakan #. A # di dalam nilai query diperlakukan sebagai awal fragmen kecuali di-encode sebagai %23.
  • Kebingungan tanda plus. + berarti spasi dalam body ber-form-encode tetapi merupakan + literal dalam path URL atau query. Untuk mengirim tanda plus asli dalam nilai query, encode sebagai %2B.
  • Urutan persen yang salah bentuk. % literal yang tidak pernah di-encode menyebabkan decodeURIComponent melempar URI malformed. Encode % sebagai %25 atau hapus persen tunggal sebelum decoding.
  • UTF-8 vs server legacy Latin-1. Alat ini selalu menggunakan UTF-8. Beberapa sistem sangat lama mengharapkan Latin-1 / windows-1252 — di sana é adalah %E9, bukan %C3%A9. Jika Anda melihat mojibake, ujung lainnya bukan UTF-8.
Pertanyaan yang sering diajukan

Apa perbedaan antara encodeURI dan encodeURIComponent?

encodeURIComponent meng-escape segala sesuatu yang bukan huruf, digit, atau salah satu dari -_.!~*'(), jadi aman untuk nilai query individual dan segmen path. encodeURI membiarkan karakter yang dicadangkan URL seperti :/?#&= sendirian, jadi untuk meng-encode seluruh URL yang sudah memiliki struktur. Gunakan Komponen 95% waktu; gunakan URL penuh hanya ketika Anda memiliki URL yang sebagian besar valid dengan spasi atau Unicode yang tersesat.

Karakter apa yang sebenarnya perlu di-encode dalam query string?

Pemisah query string & dan = harus di-encode di dalam nilai (jika tidak, mereka terlihat seperti pemisah). Spasi menjadi %20 atau +. Penanda fragmen # harus di-encode. Plus: /, ?, apa pun yang non-ASCII, dan karakter kontrol. encodeURIComponent menangani semua ini; encodeURI membiarkan &, =, /, ?, # tidak di-encode karena mereka struktural URL.

Mengapa URL saya menjadi double-encoded?

Double-encoding terjadi ketika Anda meng-encode nilai yang sudah di-encode. Spasi menjadi %20, kemudian % itu sendiri menjadi %25, memberikan %2520. Biasanya disebabkan oleh melewatkan URL yang sudah di-encode melalui encodeURIComponent lagi, atau oleh framework yang auto-encode di atas encoding manual Anda. Decode sekali dan encode ulang dengan bersih, atau lewati satu lapisan.

Bagaimana ini menangani karakter non-ASCII seperti emoji atau huruf beraksen?

Encoder JavaScript pertama mengonversi karakter non-ASCII ke byte UTF-8, kemudian percent-encode setiap byte. Jadi é menjadi %C3%A9 (dua byte) dan emoji seperti 😀 menjadi %F0%9F%98%80 (empat byte). Decoding membalikkan prosesnya. Ini adalah perilaku RFC 3986 standar dan bekerja dengan setiap server modern.

Mengapa decoding gagal dengan "URI malformed"?

decodeURIComponent melempar ketika melihat urutan persen tidak valid — % tunggal yang tidak diikuti oleh dua digit hex (misalnya %ZZ atau hanya %), atau urutan byte UTF-8 yang tidak valid (misalnya %C3 tanpa byte lanjutan yang valid). Penyebab umum: % literal dalam input yang tidak pernah di-encode, atau string yang sudah di-decode sekali dan masih memiliki tanda persen di dalamnya.

Haruskah spasi menjadi + atau %20?

Keduanya terlihat di dunia nyata. %20 benar di mana saja — dalam path, query string, dan fragmen. Pintasan + hanya berarti "spasi" di dalam format application/x-www-form-urlencoded yang digunakan oleh pengiriman form HTML. Alat ini menggunakan %20 karena encodeURIComponent melakukannya. Jika Anda secara khusus membutuhkan +, ganti %20 dengan + setelah encoding.