Encoder Komponen URI

Jika Anda pernah meneruskan nilai seperti name=John & Jane ke dalam URL tanpa mengenkodenya, Anda tahu derita itu: & dibaca sebagai parameter baru dan server melihat data kacau. Tool ini melakukan percent-encode pada string apa pun untuk penggunaan aman sebagai komponen URI sesuai RFC 3986, dan mengubah setiap karakter yang dicadangkan menjadi pasangan %HH (termasuk spasi). Tempel sebuah fragmen, nilai kueri, atau target pengalihan dan dapatkan kembali sesuatu yang aman untuk digabungkan ke dalam URL apa pun.

Cara mengenkode komponen URI

  1. 1

    Tempel nilai Anda

    Masukkan satu nilai parameter kueri, segmen path, atau string fragmen.

  2. 2

    Pilih enkode atau dekode

    Ubah arah untuk mengembalikan percent-escape menjadi karakter aslinya.

  3. 3

    Jalankan

    Tool mengenkode setiap karakter ke UTF-8, lalu mengganti setiap byte yang dicadangkan dengan %HH.

  4. 4

    Salin hasilnya

    Masukkan output langsung ke templat URL atau klien API Anda.

Apa yang di-escape

Encoder ini mengikuti RFC 3986: hanya himpunan yang tak dicadangkan yang dibiarkan utuh, A-Z a-z 0-9 - _ . ~. Selebihnya menjadi UTF-8 yang di-percent-encode, termasuk spasi dan sub-delimiter ! * ' ( ) yang akan dibiarkan oleh encodeURIComponent JavaScript.

Karakter Dienkode jadi
spasi %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Komponen vs URI penuh

Encoder ini lebih ketat daripada encodeURI, yang membiarkan : / ? # [ ] @ ! $ & ' ( ) * + , ; = apa adanya karena karakter tersebut bersifat struktural dalam sebuah URL. Untuk nilai yang Anda gabungkan ke dalam query string, Anda ingin bentuk yang ketat, dan itulah yang dihasilkan tool ini: ia bahkan meng-escape ! ' ( ) *, melangkah lebih jauh dari encodeURIComponent JavaScript.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Jebakan umum

  • Enkode ganda: mengenkode sesuatu yang sudah dienkode memberi Anda %2520 alih-alih %20. Selalu dekode dulu jika Anda ragu tentang sumbernya.
  • Tanda plus dalam formulir: pengiriman formulir HTML mengenkode spasi sebagai +, bukan %20. Dekoder yang mengikuti RFC 3986 secara ketat (termasuk yang ini) tidak akan mengembalikan + menjadi spasi. Gunakan dekoder yang sadar-formulir untuk kasus tersebut.
  • Pemisah path: mengenkode / di sini mengubahnya menjadi %2F. Jika Anda ingin mempertahankan struktur path yang sebenarnya, gabungkan dulu segmen-segmennya lalu enkode masing-masing secara terpisah.

Pertanyaan yang Sering Diajukan

Ini adalah percent-encoding sesuai RFC 3986, bentuk yang ketat. Ia meng-escape :, /, ?, # dan karakter dicadangkan lainnya (plus !, ', (, ) dan *) karena sebuah komponen tidak boleh membawa struktur URL di dalamnya. Ini membuatnya lebih ketat daripada encodeURIComponent JavaScript dan jauh lebih ketat daripada encodeURI.

%20 adalah cara RFC 3986. + untuk spasi adalah warisan dari pengkodean body application/x-www-form-urlencoded. Untuk query string dalam URL, %20 selalu aman; + hanya diharapkan di server ketika dihasilkan oleh POST formulir.

Setiap karakter dienkode UTF-8 terlebih dahulu, lalu setiap byte di-escape. Karakter seperti 日 menjadi %E6%97%A5 (tiga byte).

Tidak. Nilai di-percent-encode di server untuk membangun hasil Anda dan tidak disimpan atau dicatat; tidak ada yang Anda tempel yang dipertahankan setelah respons dikirim.

Alat Terkait

Alat ini tersedia dalam bahasa lain