Escape/Unescape String
Escape atau unescape string untuk JSON, JavaScript, template literal, SQL, CSV, atribut HTML, regular expression, dan URL, langsung di browser Anda.
Escape bukan pengganti query berparameter (prepared statement). Gunakan hasil ini untuk membaca atau men-debug SQL, jangan pernah untuk menyusun query dari masukan pengguna.
Cara melakukan escape atau unescape string
- Pilih target di Format: string JSON, string JavaScript, template literal JavaScript, literal string SQL, field CSV, nilai atribut HTML, regular expression, atau komponen URL.
- Ketik atau tempel teks Anda di kotak masukan.
- Klik Escape untuk mengubah teks biasa menjadi literal yang aman, atau Unescape untuk mengubah literal kembali menjadi teks biasa. Hasilnya diperbarui saat Anda mengetik, sesuai arah yang terakhir Anda pilih.
- Sesuaikan opsi yang tampil untuk format tersebut: Tambahkan tanda kutip pengapit, Escape karakter non-ASCII, atau Spasi sebagai + (data formulir).
- Klik Salin, atau Pakai hasil sebagai masukan untuk membalik operasi dan memeriksa hasil bolak-baliknya.
Jumlah karakter sebelum dan sesudah ditampilkan di bawah tombol. Semuanya berjalan di browser Anda; tidak ada yang diunggah.
Apa yang dilakukan setiap format
- String JSON: meng-escape
",\, dan karakter kontrol (\n,\t,\u0000…), persis sepertiJSON.stringify. Dengan Escape karakter non-ASCII, setiap karakter di atas U+007E menjadi\uXXXX(emoji menjadi pasangan surrogate seperti😀). Unescape menerima teks dengan atau tanpa tanda kutip gandanya, dan menoleransi jeda baris mentah. - String JavaScript (‘…’): meng-escape backslash, tanda kutip tunggal, jeda baris, dan karakter kontrol, ditambah U+2028 dan U+2029 yang merusak mesin lama. Unescape memahami
\x41,A,\u{1F600}, escape oktal lama seperti\101, dan sambungan baris. - Template literal JavaScript (`…`): meng-escape backtick, backslash, dan
${agar tidak ada ekspresi yang dievaluasi; jeda baris dan tab dibiarkan apa adanya, karena template literal mengizinkannya. - Literal string SQL (‘…’): menggandakan tanda kutip tunggal (
O'Brien→'O''Brien'), seperti di SQL standar. Unescape menolak tanda kutip yang tidak digandakan. Backslash dibiarkan: MySQL dalam mode bawaannya juga memperlakukan\sebagai karakter escape, jadi periksa aturan database Anda. - Field CSV (RFC 4180): mengapit field dengan tanda kutip ganda dan menggandakan tanda kutip di dalamnya jika field berisi koma, titik koma, tab, tanda kutip, jeda baris, atau spasi di awal/akhir. Tambahkan tanda kutip pengapit memaksa penambahan tanda kutip.
- Nilai atribut HTML: mengganti
&,<,>,", dan'dengan entitas, sehingga aman di atribut berkutip tunggal maupun ganda. Unescape mendekode referensi numerik serta&,<,>,",', dan . - Regular expression (teks literal): meng-escape
. * + ? ^ $ { } ( ) | [ ] \ /dengan backslash, ditambah jeda baris dan tab, agar pola mencocokkan teks secara literal. Hasilnya valid dengan atau tanpa flagu. - Komponen URL (percent-encoding): bekerja seperti
encodeURIComponent, mengenkode semuanya kecuali huruf, angka, dan- _ . ! ~ * ' ( )sebagai byte UTF-8. Spasi sebagai + (data formulir) memakai konvensiapplication/x-www-form-urlencoded.
Escape bukan batas keamanan untuk SQL
Saat Anda memilih SQL, alat ini menampilkan pengingat, dan hal ini layak diulang: solusi sebenarnya untuk SQL injection adalah query berparameter (prepared statement), di mana nilai dikirim terpisah dari teks SQL. Escape secara manual itu rapuh: bergantung pada database, set karakter koneksi, dan pengaturan seperti penanganan backslash di MySQL. Gunakan hasil ini untuk membaca log, menulis fixture, atau men-debug query, jangan pernah untuk menyusun query dari masukan pengguna.
Untuk CSV, alat ini juga memperingatkan jika sebuah nilai diawali =, +, -, atau @: spreadsheet bisa menjalankannya sebagai rumus (CSV injection). Tanda kutip tidak mencegahnya; menambahkan apostrof atau spasi di depan nilai adalah mitigasi yang lazim.
Pertanyaan yang sering diajukan
Apa bedanya string JSON dan string JavaScript?
JSON hanya mengizinkan tanda kutip ganda dan sedikit escape (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript juga menerima tanda kutip tunggal, backtick, \x41, \u{…}, \v, dan \0. Escape JSON yang valid juga valid di JavaScript, tetapi tidak sebaliknya.
Mengapa unescape gagal dengan pesan “Escape sequence tidak valid”?
Teks berisi backslash yang diikuti sesuatu yang tidak diizinkan format tersebut, seperti \u12 dengan kurang dari empat digit hex, atau satu backslash di akhir. Pesan kesalahan menampilkan sequence yang bermasalah.
Apakah CSV memerlukan tanda kutip di setiap field?
Tidak. RFC 4180 hanya mewajibkan tanda kutip jika field berisi koma, tanda kutip ganda, atau jeda baris. Alat ini juga memberi tanda kutip pada titik koma, tab, dan spasi di awal atau akhir, karena banyak spreadsheet memakainya sebagai pemisah atau memangkasnya.
Apakah escape atribut HTML cukup untuk mencegah XSS?
Escape ini benar untuk teks yang ditempatkan di dalam nilai atribut berkutip. Namun tidak cukup untuk atribut yang isinya sendiri berupa kode atau URL, seperti onclick atau href="javascript:…"; atribut seperti itu memerlukan validasi, bukan sekadar escape.
Apakah teks saya dikirim ke server?
Tidak. Semua konversi berjalan secara lokal di browser Anda, sehingga Anda bisa menempelkan nilai konfigurasi atau data yang tidak ingin Anda bagikan dengan aman.
Alat terkait
- URL Encoder dan Decoder URL encoder dan decoder gratis. Encode parameter query atau URL lengkap, decode urutan %XX, dan tangani + sebagai spasi. Berjalan di browser Anda.
- Encode dan Decode Entitas HTML Ubah karakter khusus menjadi entitas HTML (bernama, desimal, atau hex) atau decode entitas apa pun, dengan daftar lengkap 2.231 referensi bernama HTML5.
- JSON Formatter dan Validator JSON formatter dan validator gratis untuk merapikan, minify, dan memeriksa JSON di browser Anda, dengan kesalahan sintaksis yang dilaporkan per baris dan kolom.
- Regex Tester Tes regular expression JavaScript secara langsung dengan kecocokan yang disorot, grup tangkapan, penggantian teks, dan penjelasan setiap token.