logo
GeekFormat

Enkode URL

Kode Coding
Masukan URL
0 chars

Alat enkode/dekode URL online gratis. Mendukung 4 mode encodeURIComponent/encodeURI/RFC 3986, penyorotan karakter terenkode secara real-time, mode batch banyak baris, Query Only untuk mengenkode hanya nilai parameter. Pemrosesan lokal di browser, tidak ada unggahan data.

Rekomendasi Terkait

Kasus penggunaan

  • Debugging parameter API: membandingkan output encodeURIComponent dan encodeURI untuk menyelesaikan masalah ketidakcocokan tanda tangan antarmuka
  • Dekode log: mendekode konten yang terenkode URL di log secara batch untuk memulihkan teks yang dapat dibaca
  • Pembuatan URL: mode Query Only mempertahankan nama kunci dan hanya mengenkode nilai, menghindari kesalahan format saat penggabungan manual
  • Pengembangan frontend: penyorotan membantu memahami karakter mana yang di-escape, berguna untuk debugging pengalihan halaman
  • Migrasi data: memproses data terenkode URL yang diekspor dari sistem lama secara batch untuk dikonversi ke format baru

Fitur

  • Empat mode enkode: beralih antara encodeURIComponent / encodeURI / full / RFC 3986 dengan satu klik, bandingkan perbedaan output secara real-time
  • Penyorotan enkode: menyorot karakter %XX yang di-escape secara real-time, penandaan warna kuning keemasan membuat hasil enkode terlihat langsung
  • Mode batch: mendukung enkode/dekode batch banyak baris, setiap baris diproses secara independen, ideal untuk log atau data massal
  • Mode Query Only: hanya mengenkode bagian nilai parameter URL (setelah tanda sama dengan), membiarkan nama kunci, karakter, dan struktur jalur tidak tersentuh
  • Debounce real-time: otomatis mengenkode/mendekode dalam 300ms, tidak perlu klik tombol, hasil muncul saat mengetik
  • Penghitung karakter: menampilkan jumlah karakter yang dimasukkan secara real-time, berguna untuk memeriksa batas panjang parameter API

Cara Penggunaan

  1. Masukkan atau tempel URL atau teks yang ingin dienkode/didekode
  2. Pilih arah enkode (Enkode/Dekode) dan mode (Component / URI / full / RFC 3986)
  3. Aktifkan mode batch untuk data banyak baris atau Query Only untuk mengenkode hanya nilai parameter
  4. Periksa hasil yang disorot dan salin string terenkode untuk digunakan dalam panggilan API atau pembuatan URL

Pertanyaan Umum

Apa perbedaan antara encodeURIComponent dan encodeURI?

encodeURIComponent mengenkode semua karakter tidak aman, termasuk &, =, ?, dll., sehingga cocok untuk mengenkode nilai parameter individu. encodeURI mempertahankan karakter struktural URL (:, /, ?, #, dll.), sehingga cocok untuk mengenkode URL lengkap. Skenario penggunaan: Component untuk nilai parameter, URI untuk URL lengkap.

Apa perbedaan antara RFC 3986 dan enkode standar?

RFC 3986 adalah versi standar URL yang diperbarui, yang menganggap tilde ~ sebagai karakter aman yang tidak perlu dienkode, sedangkan standar lama mengenkodenya sebagai %7E. Menggunakan RFC 3986 dapat menghindari perbedaan parsing di beberapa server dan memberikan kompatibilitas yang lebih baik.

Dalam skenario apa mode Query Only digunakan?

Digunakan ketika Anda memiliki query string URL berbentuk ?name=张三&city=北京 dan hanya ingin mengenkode nilai parameter tanpa mengubah nama kunci dan karakter. Dalam kasus ini, name dan city tetap tidak berubah, dan nilai dienkode menjadi %E5%BC%A0%E4%B8%89 dan %E5%8C%97%E4%BA%AC.

Haruskah spasi dienkode sebagai + atau sebagai %20?

Dalam format application/x-www-form-urlencoded (pengiriman form HTML), spasi dienkode sebagai +. Namun di jalur URL dan di encodeURIComponent, spasi selalu dienkode sebagai %20. Alat ini secara default menggunakan format %20.

Mengapa alat yang berbeda memberikan hasil berbeda untuk karakter Cina yang sama?

Ini tergantung pada metode pengkodean karakter. Alat ini menggunakan pengkodean UTF-8 (standar web), karakter Cina '中' dienkode sebagai %E4%B8%AD. Jika alat lain menggunakan pengkodean GBK, hasilnya adalah %D6%D0. Disarankan untuk selalu menggunakan UTF-8 untuk URL web.

Untuk apa penyorotan enkode?

Menyorot karakter yang terenkode dalam format %XX (misalnya spasi→%20) secara real-time, membantu memahami aturan enkode dan menyelesaikan masalah. Huruf dan angka adalah karakter aman yang tidak dienkode, hanya karakter Cina dan khusus yang dienkode.

Apakah karakter % itu sendiri perlu dienkode?

Ya. % adalah karakter awal dari escape dalam enkode URL. Jika % harfiah muncul dalam nilai parameter, itu harus dienkode sebagai %25; jika tidak, itu akan salah diartikan sebagai awalan enkode, menyebabkan kesalahan parsing. Misalnya, 100% harus dienkode sebagai 100%25.

Apa itu enkode URL?

Enkode URL (persen-encoding) adalah proses mengonversi karakter tidak aman di URL ke format %XX. URL hanya dapat berisi subset kecil karakter ASCII (huruf, angka, -_.~), semua karakter lain (termasuk Cina, spasi, karakter khusus) harus dienkode sebelum dikirimkan di URL. Misalnya, spasi menjadi %20, karakter Cina '中' menjadi %E4%B8%AD.

**encodeURIComponent vs encodeURI**: Ini adalah dua fungsi enkode yang paling sering digunakan. encodeURIComponent mengenkode lebih teliti, termasuk pemisah parameter seperti &, =, ?, sehingga cocok untuk mengenkode nilai parameter individu. encodeURI mempertahankan struktur URL (scheme://, jalur, /, ?, #), sehingga cocok untuk mengenkode URL lengkap. Penggunaan yang salah menyebabkan kesalahan parsing parameter.

**RFC 3986 vs standar lama**: RFC 3986 menganggap tilde ~ sebagai karakter aman yang tidak perlu dienkode, sedangkan standar awal mengenkodenya sebagai %7E. Menggunakan RFC 3986 mengurangi escape yang tidak perlu, meningkatkan keterbacaan URL, dan menghindari masalah parsing %7E di beberapa server.

**Mode Query Only**: Digunakan ketika Anda hanya ingin mengenkode nilai parameter di query string URL, tanpa mengubah nama kunci, tanda sama dengan, dan karakter &. Misalnya, ?name=张三 dienkode menjadi ?name=%E5%BC%A0%E4%B8%89, membiarkan nama kunci tetap dapat dibaca dan hanya mengenkode nilai.

**Penyorotan enkode**: Menyorot karakter dalam format %XX dengan warna kuning keemasan secara real-time, sehingga pengguna dapat langsung melihat karakter mana yang telah dienkode. Ini membantu memahami aturan enkode: huruf dan angka biasanya merupakan karakter aman yang tidak dienkode, hanya karakter Cina dan khusus yang dienkode. Semua perhitungan dilakukan secara lokal di browser, tidak ada data yang diunggah.

术语表

Persen-encoding (Percent-encoding)
Nama resmi untuk enkode URL, metode pengkodean yang merepresentasikan karakter dengan % diikuti oleh dua digit heksadesimal. Misalnya, spasi menjadi %20, karakter Cina '中' menjadi %E4%B8%AD.Wikipedia - Percent-encoding
encodeURIComponent
Fungsi bawaan JavaScript, mengenkode semua karakter kecuali A-Z a-z 0-9 - _ . ! ~ * ' ( ). Paling sering digunakan untuk mengenkode nilai parameter query individu.
encodeURI
Fungsi bawaan JavaScript, mempertahankan karakter struktural URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) dan hanya mengenkode karakter yang benar-benar perlu dienkode. Digunakan untuk mengenkode URL lengkap.
RFC 3986
Standar IETF terbaru untuk sintaks umum URI (2005), mendefinisikan aturan enkode URL dan mengklasifikasikan tilde ~ sebagai karakter tidak dipesan (tidak perlu enkode). Menggantikan RFC 2396 dan RFC 1738 lama.RFC 3986
Karakter Dipesan (Reserved Characters)
Karakter dengan makna khusus di URL, seperti : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Karakter ini harus dienkode ketika digunakan sebagai data, tetapi tidak di posisi strukturalnya.
Karakter Tidak Dipesan (Unreserved Characters)
Karakter aman yang dapat digunakan di posisi URL mana pun tanpa enkode, termasuk A-Z, a-z, 0-9, -, _, ., ~ (menurut RFC 3986).
Query String
Bagian dari URL setelah ?, terdiri dari pasangan key=value yang dipisahkan oleh &. Misalnya, di ?name=张三&age=20, name=张三 dan age=20 adalah dua parameter.
URLSearchParams
API yang disediakan oleh browser modern untuk membuat dan mengurai query string URL dengan mudah, dengan penanganan enkode dan dekode otomatis. Lebih aman dan andal daripada penggabungan string manual.
application/x-www-form-urlencoded
Format pengiriman default untuk form HTML, di mana spasi dienkode sebagai + bukan %20, agak berbeda dari encodeURIComponent. Framework server biasanya menangani kedua format secara otomatis.
Pengkodean UTF-8
Metode pengkodean karakter standar untuk web. Saat mengenkode URL, karakter non-ASCII (seperti Cina, emoji) terlebih dahulu dikonversi ke urutan byte UTF-8, kemudian setiap byte dienkode dalam format %XX.

Perbandingan Karakter yang Di-escape di 4 Mode Enkode

KarakterMaknaencodeURIComponentencodeURIRFC 3986
SpasiSpasi%20%20%20
!Tanda seru%21!%21
#Pengenal fragmen%23#%23
$Tanda dolar%24$%24
&Pemisah parameter%26&%26
'Tanda kutip tunggal%27'%27
(Kurung buka%28(%28
)Kurung tutup%29)%29
*Bintang%2A*%2A
+Tanda tambah%2B+%2B
,Koma%2C,%2C
/Pemisah jalur%2F/%2F
:Titik dua%3A:%3A
;Titik koma%3B;%3B
=Tanda sama dengan%3D=%3D
?Tanda tanya%3F?%3F
@Tanda at%40@%40
~Tilde%7E%7E~

Referensi Cepat Karakter Khusus URL yang Umum

TerenkodeKarakter AsliPenggunaan di URL
%20(spasi)Spasi
%21!Pemisah tambahan
%23#Pengenal fragmen (hash)
%25%Karakter escape itu sendiri
%26&Pemisah parameter query
%2B+Tanda tambah / spasi di form
%2F/Pemisah jalur
%3A:Pemisah skema
%3D=Pemisah kunci-nilai
%3F?Awal query string
%40@Pemisah auth/email
%5B[Parameter array (RFC 3986)

Code Examples

Enkode/Dekode URL di JavaScript

// encodeURIComponent: mengenkode nilai parameter individu (paling sering digunakan)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI: mengenkode URL lengkap (mempertahankan karakter struktural :/?#&=)
const url = encodeURI('https://example.com/search?q=halo dunia');
console.log(url);

// Dekode
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四

// Kompatibel RFC 3986 (~ tidak terenkode)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// API URLSearchParams (cara modern, enkode otomatis)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Enkode/Dekode URL di Python

from urllib.parse import quote, unquote, urlencode, quote_plus

# quote: mirip dengan encodeURIComponent
encoded = quote('张三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# Mode RFC 3986 (~ default tidak terenkode)
print(quote('hello~world'))  # hello~world

# quote_plus: spasi terenkode menjadi + (format form)
print(quote_plus('hello world'))  # hello+world

# Dekode
print(unquote(encoded))  # 张三&李四

# urlencode: membuat query string
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Enkode/Dekode URL di Java

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // Enkode URL (URLEncoder - format form, spasi menjadi +)
        String encoded = URLEncoder.encode("张三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // Dekode
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 张三&李四

        // Membuat URL lengkap (kelas URI menangani enkode secara otomatis)
        URI uri = new URI("https", "example.com", "/search", "q=halo", null);
        System.out.println(uri.toASCIIString());
    }
}

Authoritative References