Pengekod URL: Loloskan Aksara Khas dalam URL Dalam Talian Percuma
Alat pelolos rentetan URL percuma untuk mengekod aksara khas serta-merta. Tukar ruang, Unicode, dan simbol ke format peratusan yang dikod. Sempurna untuk API, borang web, dan URL antarabangsa. Cuba sekarang!
Pengawal Rentetan URL
Dokumentasi
Pengekodan URL: Apakah Maksudnya dan Cara Ia Berfungsi
Pengekodan URL, yang juga dipanggil pengekodan peratus, ialah cara mewakili aksara dalam alamat web dengan hanya menggunakan sekumpulan kecil aksara ASCII yang selamat. Ia berfungsi dengan menggantikan aksara tidak selamat dengan tanda % diikuti dua digit heksadesimal. Alat untuk meloloskan rentetan URL ini mengekod teks dengan cara yang sama seperti fungsi terbina dalam JavaScript, encodeURIComponent.
Mengapa URL Memerlukan Pengekodan
URL hanya boleh mengandungi set aksara yang terhad: huruf, digit dan beberapa tanda baca. Ruang, huruf beraksen, aksara daripada abjad bukan Latin dan simbol seperti & atau = boleh merosakkan URL atau mengubah maksudnya jika muncul tanpa pengekodan. Contohnya, ruang dalam pautan boleh menyebabkan pelayar atau pelayan membaca URL itu sebagai dua bahagian berasingan. Pengekodan peratus menggantikan aksara ini dengan kod yang boleh dibaca dengan cara yang sama oleh setiap pelayar dan pelayan.
Aksara yang Tidak Diubah oleh Alat Ini
Alat ini tidak pernah mengubah aksara berikut. Aksara tersebut diteruskan begitu sahaja:
- Huruf besar dan huruf kecil:
A–Z,a–z - Digit:
0–9 - Tanda baca
-._~!*'()
Setiap aksara lain akan dikodkan sebagai peratus, termasuk:
- Aksara ruang dan tanda baca seperti
:/?#[]@$&+,;= - Huruf beraksen dan sebarang aksara bukan ASCII atau Unicode yang lain
- Aksara
%harfiah itu sendiri, yang sentiasa menjadi%25, walaupun sudah menjadi sebahagian daripada jujukan berkod peratus
Sesetengah panduan umum tentang sintaks URL mengumpulkan ! * ' ( dan ) bersama tanda baca lain sebagai aksara yang "mungkin perlu dikodkan" dalam konteks tertentu. Alat khusus ini tidak mengekodnya kerana mengikut set peraturan encodeURIComponent, yang menganggap aksara tersebut selamat.
Cara Mengira Rentetan Berkod Peratus (Formula)
Alat ini memeriksa setiap aksara input satu demi satu dan menggunakan peraturan berikut:
- Jika aksara itu ialah salah satu aksara yang tidak diubah seperti yang disenaraikan di atas, kekalkan aksara itu.
- Jika tidak, tukarkan aksara itu kepada jujukan bait UTF-8. Huruf Latin beraksen serta huruf Yunani, Kiril dan Arab menggunakan dua bait. Aksara Cina, Jepun dan Korea menggunakan tiga bait. Emoji menggunakan empat bait.
- Tulis setiap bait sebagai nombor heksadesimal dua digit.
- Letakkan
%di hadapan setiap pasangan heksadesimal. - Cantumkan hasil mengikut urutan untuk membentuk rentetan berkod.
Contoh pengiraan
Input: Jürgen & Björk
Proses mengikut aksara satu demi satu:
| Aksara | Hasil |
|---|---|
J | J (tidak diubah) |
ü | %C3%BC (bait UTF-8 0xC3, 0xBC) |
rgen | rgen (tidak diubah) |
(ruang) | %20 |
& | %26 |
(ruang) | %20 |
Bj | Bj (tidak diubah) |
ö | %C3%B6 (bait UTF-8 0xC3, 0xB6) |
rk | rk (tidak diubah) |
Output: J%C3%BCrgen%20%26%20Bj%C3%B6rk
Contoh kedua menunjukkan cara set aksara yang tidak diubah berfungsi. Pengekodan rentetan -_.!~*'() menghasilkan -_.!~*'(), tepat-tepat teks yang sama kerana setiap aksara di dalamnya tergolong dalam set aksara yang tidak dikhaskan. Pengekodan rentetan 100% menghasilkan 100%25 kerana tanda % itu sendiri bukan aksara yang selamat.
Menyahkod Rentetan Berkod Peratus
Penyahkodan membalikkan proses ini: setiap jujukan %XX dibaca sebagai bait heksadesimal, bait tersebut dikumpulkan semula menjadi aksara UTF-8 asal, dan aksara itu menggantikan jujukan tersebut. Contohnya, %C3%BC dinyahkod kembali menjadi ü, manakala %20 dinyahkod menjadi ruang. Alat ini hanya mengekod; penyahkod berasingan diperlukan untuk membalikkan proses itu.
Kegunaan Umum
Pengekodan peratus digunakan apabila teks yang ditaip oleh seseorang, bukannya teks yang ditulis oleh pengatur cara, perlu dijadikan sebahagian daripada URL:
- Kotak carian yang meletakkan istilah carian dalam bar alamat, seperti
?q=shoes%20%26%20bags - Parameter pertanyaan yang membawa nama, alamat atau data pengguna yang lain
- Pautan ke halaman dengan tajuk dalam bahasa yang menggunakan huruf beraksen atau tulisan bukan Latin
- Permintaan API yang menghantar token atau pengecam sebagai sebahagian daripada URL
Contoh Kod
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5quote Python sentiasa membiarkan huruf, digit dan - . _ ~ tanpa perubahan. Lima aksara tambahan
! * ' ( ) perlu disenaraikan dalam safe untuk menyamai alat ini. Tanpa
nya, quote mengembalikan %21 %2A %27 %28 %29.
Sejarah
Idea mengekod aksara tidak selamat dalam URL bermula sejak RFC 1738 pada (4,410 cm) 1994, salah satu dokumen terawal yang mentakrifkan format URL. RFC 3986, yang diterbitkan pada 2005, mengemas kini peraturan tersebut dan mentakrifkan secara rasmi set aksara "tidak terpelihara" yang tidak pernah memerlukan pengekodan. encodeURIComponent, fungsi JavaScript yang menjadi asas alat ini, mengikut set aksara tidak terpelihara yang sedikit lebih luas berbanding RFC 3986: fungsi ini juga membiarkan ! * ' ( dan ) tanpa pengekodan, selaras dengan versi terdahulu spesifikasi URI.
Soalan lazim
Apakah perbezaan antara pengekodan URL dengan pelolosan URL?
Kedua-duanya bermaksud perkara yang sama. Kedua-dua istilah tersebut menerangkan pengekodan peratus, iaitu aksara digantikan dengan % diikuti dua digit heksadesimal.
Mengapakah !, *, ', ( dan ) kekal tidak berubah dalam alat ini?
Alat ini menggunakan encodeURIComponent, yang menganggap lima aksara tersebut selamat dan membiarkannya tepat seperti yang ditaip. Fungsi pengekodan lain dan sesetengah pelayan mungkin masih mengharapkan aksara tersebut dikodkan, jadi periksa sistem destinasi jika hal ini menimbulkan masalah.
Apakah perbezaan antara %20 dan + untuk ruang?
Kedua-duanya mewakili ruang. %20 ialah pengekodan peratus umum untuk ruang. Tanda + ialah kes khas yang hanya digunakan dalam data application/x-www-form-urlencoded, iaitu format yang digunakan oleh penghantaran borang HTML, bukan oleh alat ini.
Adakah alat ini menyahkod teks yang telah dikodkan?
Tidak. Alat ini hanya mengekod. Jika input sudah mengandungi tanda %, tanda % itu dianggap sebagai aksara harfiah dan menjadi %25 dalam output, bukannya dibiarkan tanpa perubahan.
Bagaimanakah aksara bukan Latin, seperti teks Cina atau Arab, dikendalikan?
Setiap aksara mula-mula ditukarkan kepada jujukan bait UTF-8, kemudian setiap bait dikodkan sebagai peratus. Satu aksara Cina menggunakan tiga bait, jadi aksara itu menghasilkan tiga kumpulan %XX. Satu huruf Arab menggunakan dua bait, jadi aksara itu menghasilkan dua kumpulan.
Bilakah alat ini enggan mengekod teks? Hanya apabila teks mengandungi separuh daripada pasangan surrogate. Pasangan surrogate ialah kod dua bahagian yang menyimpan aksara melebihi U+FFFF, seperti emoji. Separuh tunggal tidak mempunyai bentuk UTF-8 yang sah, jadi alat ini memaparkan ralat dan bukannya hasil. Penaipan biasa tidak boleh menghasilkan keadaan ini; biasanya ia berpunca daripada salinan yang terpotong atau pautan yang rosak.
Patutkah keseluruhan URL dikodkan atau hanya sebahagiannya?
Hanya kodkan bahagian yang mengandungi data pengguna, seperti nilai pertanyaan atau segmen laluan, bukan bahagian yang membentuk struktur URL, seperti https:// dan nama domain. Pengekodan keseluruhan URL dengan pengekod komponen juga akan menukarkan aksara :, / dan ? kepada kod peratus, lalu merosakkan alamat tersebut.