Pengekod/Penyahkod URL

Pengekod penyahkod URL kami menukar URL dan teks kepada format berkod peratus dan kembali kepada asal dalam masa nyata. Kod aksara khas, parameter pertanyaan, segmen laluan dan teks Unicode untuk kegunaan selamat dalam URL. Nyahkod rentetan berkod peratus kembali kepada teks yang boleh dibaca. Menyokong pengekodan standard RFC 3986, pengekodan komponen dan pengekodan URL penuh dengan sokongan UTF-8. Semua pemprosesan adalah pada sisi klien — data anda tidak pernah meninggalkan pelayar anda.

star 4.9
auto_awesome AI
New

Pengekod URL calculator

Method:
0 characters 0 bytes
0 characters

lightbulb Tips

  • Use encodeURIComponent for query values
  • Spaces → %20 (standard) or + (form data)
  • A-Z a-z 0-9 - _ . ~ are never encoded
  • Always encode user input before URLs

How to Use the Pengekod URL

swap_horiz

Pilih Mod

Pilih Kod untuk menukar teks kepada pengekodan URL, atau Nyahkod untuk menukar semula teks berkod peratus.

tune

Pilih Kaedah

Pilih Komponen (untuk nilai pertanyaan), URI (untuk URL penuh), atau Data Borang (+ untuk ruang kosong).

text_fields

Masukkan Input

Taip atau tampal teks anda (untuk pengekodan) atau URL yang dikodkan (untuk penyahkodan).

content_copy

Dapatkan Keputusan

Keputusan dipaparkan serta-merta. Klik Salin untuk menyalin ke papan klip.

The Formula

Pengekodan URL (pengekodan peratus) menggantikan aksara tidak selamat atau dikhaskan dengan tanda peratus (%) diikuti oleh dua digit heksadesimal yang mewakili nilai bait aksara tersebut. Sebagai contoh, ruang kosong menjadi %20, dan '&' menjadi %26. Aksara UTF-8 menggunakan berbilang bait berkod peratus (cth., '€' → %E2%82%AC). Aksara tidak dikhaskan (huruf, digit, -, _, ., ~) tidak pernah dikodkan.

URL Encoding = replace unsafe characters → %HH (hex byte value)

lightbulb Variables Explained

  • %HH Tanda peratus diikuti oleh dua digit heksadesimal yang mewakili nilai bait
  • Unreserved chars A-Z a-z 0-9 - _ . ~ (tidak pernah dikodkan)
  • Reserved chars : / ? # [ ] @ ! $ & ' ( ) * + , ; = (dikodkan dalam komponen)
  • UTF-8 Aksara berbilang bait dikodkan sebagai berbilang urutan %HH

tips_and_updates Pro Tips

1

Gunakan encodeURIComponent untuk nilai parameter pertanyaan — ia mengekod segala-galanya kecuali A-Z a-z 0-9 - _ . ~

2

Gunakan encodeURI untuk URL penuh — ia mengekalkan :, /, ?, #, &, = dan aksara struktur URL yang lain

3

Ruang kosong boleh dikodkan sebagai %20 (standard) atau + (data borang / application/x-www-form-urlencoded)

4

Sentiasa kod input pengguna sebelum memasukkannya ke dalam URL untuk mencegah serangan suntikan

5

Aksara UTF-8 seperti emoji dikodkan sebagai berbilang bait %HH (cth., 😀 → %F0%9F%98%80)

6

Pengekodan dwi berlaku apabila anda mengekod rentetan yang telah dikodkan — nyahkod dahulu jika tidak pasti

7

RFC 3986 mentakrifkan standard: aksara tidak terpelihara (A-Z a-z 0-9 - _ . ~) tidak pernah dikodkan

Kalkulator ipk dan pengubah URL percuma kami menukar teks kepada format berkod peratus dan sebaliknya dengan serta-merta. Kodkan parameter pertanyaan, segmen laluan, dan aksara khas untuk penggunaan URL yang selamat. Nyahkod rentetan berkod peratus kembali kepada teks yang boleh dibaca. Menyokong UTF-8 dan semua aksara Unicode.

Pengekod URL - Teks kepada Pengekodan Peratus

Tukar sebarang teks kepada pengekodan peratus selamat-URL serta-merta. Pengkod kami mengendalikan ruang kosong, aksara khas, Unicode, dan emoji.

Pilih antara:

  • pengekodan komponen (untuk nilai pertanyaan)
  • pengekodan URI (mengekalkan struktur URL)
  • pengekodan data borang (+ untuk ruang kosong)

Penyahkod URL - Pengekodan Peratus kepada Teks

Nyahkod sebarang URL berkod peratus kembali kepada teks yang boleh dibaca. Tampal URL berkod, rentetan pertanyaan, atau parameter individu dan lihat teks asal serta-merta.

Mengendalikan:

  • urutan %HH
  • tambah sebagai ruang kosong
  • aksara UTF-8 berbilang bait

Bagaimanakah Pengekodan URL (Pengekodan Peratus) Berfungsi?

Pengekodan URL berfungsi dengan menggantikan sebarang aksara yang tidak selamat atau dikhaskan dalam URL dengan tanda peratus diikuti oleh dua digit heksadesimal yang mewakili nilai bait aksara tersebut, satu skema yang ditakrifkan secara rasmi dalam RFC 3986 oleh IETF.

Ruang kosong menjadi %20, tanda ampersand menjadi %26, dan garis miring menjadi %2F. Aksara bukan ASCII mula-mula ditukar kepada urutan bait UTF-8 mereka, kemudian setiap bait dikodkan peratus, jadi huruf 'é' menjadi %C3%A9.

Menurut Dokumen Web MDN, pelayar mengenakan ini secara automatik melalui fungsi seperti encodeURIComponent. Hanya aksara tidak dikhaskan (A-Z, a-z, 0-9, tanda sempang, garis bawah, titik, tilde) dibiarkan tidak disentuh.

Apakah Perbezaan Antara encodeURI dan encodeURIComponent?

encodeURI mengekod URL lengkap sambil mengekalkan aksara struktur yang dikhaskan, manakala encodeURIComponent mengekod satu komponen tunggal dan melarikan aksara struktur tersebut juga.

Seperti yang didokumenkan oleh Dokumen Web MDN, encodeURI membiarkan :, /, ?, #, &, dan = utuh supaya keseluruhan alamat kekal berfungsi, menjadikannya betul untuk URL penuh. encodeURIComponent melarikan segala-galanya kecuali set tidak dikhaskan RFC 3986, jadi ia adalah pilihan yang betul untuk nilai parameter pertanyaan, segmen laluan, atau teks fragmen yang mungkin mengandungi aksara dikhaskan.

Menggunakan encodeURI di mana encodeURIComponent diperlukan ialah pepijat biasa: & yang tidak dikodkan di dalam nilai akan disalah baca sebagai pemisah parameter, merosakkan permintaan secara senyap.

Aksara Manakah yang Dikhaskan lwn Tidak Dikhaskan dalam URL?

RFC 3986 membahagikan aksara URL kepada set tidak dikhaskan dan dikhaskan, dan perbezaan ini menentukan apa yang dikodkan peratus.

  • Aksara tidak dikhaskan ialah huruf A-Z dan a-z, digit 0-9, dan empat tanda tanda sempang, garis bawah, titik, dan tilde; ini tidak memerlukan pengekodan.
  • Aksara dikhaskan termasuk pembatas am : / ? # [ ] @ dan sub-pembatas ! $ & ' ( ) * + , ; = yang membawa makna sintaksis.

Mengikut spesifikasi IETF, aksara dikhaskan boleh muncul tanpa dikodkan apabila menjalankan peranan pembatas mereka tetapi mesti dikodkan peratus apabila digunakan secara literal di dalam komponen. Segala-galanya di luar kedua-dua set, termasuk ruang kosong dan Unicode, harus sentiasa dikodkan.

Mengapa URL Menggunakan %20 untuk Ruang Kosong?

URL menggunakan %20 untuk ruang kosong kerana aksara ruang kosong tidak dibenarkan muncul secara literal dalam URI di bawah RFC 3986, jadi ia dikodkan peratus kepada nilai bait ASCII, hex 20.

Terdapat konvensyen kedua: dalam data application/x-www-form-urlencoded, format yang digunakan oleh penyerahan borang HTML dan banyak rentetan pertanyaan, ruang kosong dikodkan sebagai tanda tambah (+) dan bukannya %20, seperti yang ditentukan oleh Piawaian URL WHATWG dan spesifikasi borang W3C.

Inilah sebabnya mengapa penyahkod mesti tahu konteksnya. %20 selamat secara universal dalam laluan, pertanyaan, dan fragmen, manakala + hanya bermaksud ruang kosong di dalam data pertanyaan berkod borang dan merupakan tanda tambah literal di tempat lain.

Bagaimanakah Pengekodan URL Mengendalikan Unicode dan Emoji?

Pengekodan Unicode dikendalikan oleh pengekodan URL dengan menukar dahulu setiap aksara kepada urutan bait UTF-8 dan kemudian mengekod peratus setiap bait individu. Konsortium Unicode menentukan titik kod, dan UTF-8 (dinyatakan dalam RFC 3629) memetakannya kepada satu hingga empat bait.

Contohnya:

  • Aksara ASCII bait tunggal seperti 'A' kekal sebagai 'A'
  • 'é' dikodkan kepada %C3%A9
  • aksara CJK '日' menjadi %E6%97%A5
  • emoji seperti 😀 dikodkan kepada empat bait, %F0%9F%98%80

MDN Web Docs menyatakan bahawa encodeURIComponent JavaScript beroperasi pada UTF-8 secara lalai. Penyahkod menterbalikkan ini dengan mengumpul bait berkod peratus dan mentafsir semula sebagai strim UTF-8 untuk mendapatkan semula teks asal.

Apakah Pengekodan Berganda dan Bagaimana Anda Mengelaknya?

Pengekodan berganda berlaku apabila rentetan yang telah dikodkan peratus dikodkan semula, menukarkan setiap % kepada %25 supaya %20 menjadi %2520 dan nilai itu tidak lagi dapat dibaca dengan betul.

Ini adalah sumber biasa pautan rosak dan, mengikut OWASP, kebimbangan keselamatan kerana penyerang menggunakan pengekodan berganda untuk melepasi input berniat jahat melepasi penapis yang menyahkod sekali sahaja.

Untuk mengelakannya, kodkan nilai tepat sekali pada titik di mana ia memasuki URL, dan jangan sekali-kali mengekod semula data yang datang daripada sumber berkod lain. Jika anda tidak pasti sama ada rentetan telah dikodkan, nyahkodnya dahulu; jika output berubah dan kelihatan boleh dibaca, ia telah dikodkan, dan anda tidak seharusnya mengekodnya semula.

Adakah Pengekodan URL Selamat? Pengekodan vs Penyulitan

Pengekodan URL tidak selamat dan tidak memberikan kerahsiaan; ia adalah transformasi boleh balik untuk keselamatan pengangkutan, bukan penyulitan. Sesiapa sahaja boleh menyahkod rentetan berkod peratus serta-merta, jadi data sensitif yang diletakkan dalam URL kekal boleh dibaca sepenuhnya dan, seperti yang diberi amaran oleh OWASP, turut terdedah dalam sejarah pelayar, log pelayan dan pengepala Referer.

Pengekodan hanya memastikan aksara khas tidak merosakkan sintaks URL. Penyulitan, sebaliknya, menggunakan kunci dan algoritma seperti AES (diberi piawaian oleh NIST) untuk menjadikan data tidak boleh dibaca tanpa kunci tersebut.

Penggunaan keselamatan pengekodan yang betul digabungkan dengan pelarian output yang betul untuk mengelakkan serangan suntikan; jangan sekali-kali menganggapnya sebagai cara untuk menyembunyikan atau melindungi maklumat.

Bagaimanakah Anda Mengekod Rentetan Pertanyaan dan Parameter URL dengan Betul?

Untuk mengekod rentetan pertanyaan dengan betul, gunakan encodeURIComponent pada setiap kunci dan nilai parameter secara berasingan sebelum menggabungkannya dengan & dan =, dan bukannya mengekod keseluruhan rentetan yang dipasang sekali gus.

Ini memastikan bahawa aksara rizab di dalam nilai, seperti & atau = dalam input pengguna, dilepaskan kepada %26 dan %3D supaya ia tidak boleh disalah anggap sebagai penanda sempadan, mengikut peraturan application/x-www-form-urlencoded yang diterangkan oleh Piawaian URL WHATWG. Contohnya, nilai 'hello world&x=1' mesti menjadi 'hello%20world%26x%3D1'.

Menurut MDN Web Docs, API URLSearchParams mengautomasikan ini dengan selamat. Sentiasa kodkan data bekalan pengguna sebelum memasukkannya ke dalam rentetan pertanyaan untuk mengelakkan suntikan parameter dan permintaan yang cacat.

Kesilapan Lazim Semasa Mengekod dan Menyahkod URL

Kesilapan pengekodan URL yang paling biasa ialah memilih fungsi yang salah: menggunakan encodeURI pada nilai pertanyaan membiarkan &, =, dan ? tidak dilepaskan, membiarkan input pengguna merosakkan struktur URL.

Ralat kerap yang lain, beberapa ditandakan oleh OWASP dan MDN Web Docs, termasuk:

  • mengekod dua kali nilai supaya %20 menjadi %2520
  • lupa bahawa + bermaksud ruang kosong hanya dalam data berkod borang
  • mengekod keseluruhan URL selepas ia dibina dan bukannya mengekod setiap komponen terlebih dahulu

Pembangun juga tersilap mengendalikan UTF-8 dengan menyahkod bait sebagai Latin-1, yang menghasilkan mojibake untuk teks beraksen dan bukan Latin. Akhir sekali, jangan sekali-kali bergantung pada pengekodan untuk keselamatan; kegagalan untuk melepaskan output untuk konteks sasaran meninggalkan kerentanan suntikan terbuka walaupun terdapat pengekodan peratus yang sah.

Frequently Asked Questions

sell

Tags