String escaping adalah proses menyisipkan backslash (atau penanda lain) sebelum karakter yang memiliki makna khusus di dalam literal string. Ketika parser bahasa pemrograman menemukan tanda kutip ganda di dalam string yang dikutip ganda, ia menganggapnya sebagai akhir string. Melakukan escape pada kutipan dengan backslash — menulis \" alih-alih " — memberi tahu parser untuk memperlakukannya sebagai karakter literal, bukan sebagai pembatas. Setiap bahasa yang menggunakan literal string memiliki aturan escape, meskipun urutan pastinya berbeda-beda.
Urutan escape yang paling umum memetakan karakter spasi dan kontrol yang tidak dapat muncul langsung dalam kode sumber. Baris baru menjadi \n, tab menjadi \t, dan backslash literal menjadi \\. Konvensi ini berasal dari bahasa pemrograman C (ISO/IEC 9899) dan telah diadopsi oleh JavaScript (ECMA-262), Python, Java, Go, dan Rust. JSON (RFC 8259) menggunakan sintaks yang sama tetapi hanya mendukung sekumpulan urutan yang lebih kecil.
Unescaping (kadang disebut "de-escaping") adalah operasi kebalikannya: mengonversi urutan escape kembali menjadi karakter aslinya. Ini umum dilakukan saat membaca file log, mengurai respons API, atau men-debug data yang telah di-escape dua kali. Kedua operasi ini bersifat mekanis dan mudah salah jika dilakukan secara manual, itulah mengapa pengembang menggunakan alat escape/unescape saat bekerja dengan string multi-baris, kutipan yang disematkan, atau karakter Unicode.
Mengapa Menggunakan Alat String Escape Online?
Menambahkan atau menghapus backslash secara manual itu melelahkan dan mudah salah, terutama dengan kutipan bersarang atau input multi-baris. Alat string escape berbasis browser memberikan hasil instan tanpa perlu menyiapkan REPL atau menulis skrip sekali pakai.
⚡
Konversi instan
Tempel teks Anda dan dapatkan hasil yang telah di-escape atau di-unescape secara langsung. Tidak perlu membuka terminal, memulai REPL, atau menulis skrip sekali pakai.
🔀
Beralih antar format
Beralih antara mode escaping JavaScript, Python, dan JSON. Setiap bahasa menangani tanda kutip tunggal, Unicode, dan karakter kontrol secara berbeda — alat ini menerapkan aturan yang tepat secara otomatis.
🔒
Pemrosesan yang mengutamakan privasi
Semua proses escaping dan unescaping terjadi di browser Anda menggunakan JavaScript. String Anda tidak pernah dikirim ke server, yang penting saat Anda bekerja dengan API key, token, atau data pengguna.
📋
Tidak perlu login atau instalasi
Buka halaman dan mulai menempelkan teks. Tidak ada akun yang perlu dibuat, tidak ada ekstensi yang perlu diinstal, dan tidak ada halaman persetujuan cookie yang menghalangi alat ini.
Kasus Penggunaan String Escape
Pengembangan Frontend
Escape konten yang dibuat pengguna sebelum menyisipkannya ke atribut HTML, skrip inline, atau template literal. Mencegah markup yang rusak dan vektor XSS dari kutipan atau tanda kurung siku yang tidak di-escape.
Integrasi API Backend
Buat body permintaan JSON dengan string yang disematkan yang mengandung baris baru, tab, atau kutipan. Escaping yang tepat mencegah JSON yang cacat yang akan menyebabkan error 400 dari API penerima.
DevOps dan Konfigurasi
Tulis string yang telah di-escape untuk file konfigurasi JSON, heredoc YAML, atau variabel lingkungan. Backslash yang salah tempat dalam ENV Dockerfile atau ConfigMap Kubernetes dapat merusak deployment.
QA dan Data Pengujian
Buat string pengujian dengan karakter kontrol yang disematkan, urutan Unicode, dan kutipan bersarang. String edge-case ini diperlukan untuk memverifikasi bahwa parser dan serializer menangani karakter khusus dengan benar.
Rekayasa Data
Bersihkan data yang di-escape dua kali dari ekspor CSV, agregator log, atau dump database. Field yang melewati beberapa lapisan serialisasi sering kali menumpuk backslash ekstra yang perlu dihapus.
Pembelajaran dan Debugging
Periksa bagaimana berbagai bahasa merepresentasikan string yang sama. Mahasiswa dan pengembang yang baru mengenal suatu bahasa dapat membandingkan escaping JavaScript, Python, dan JSON secara berdampingan untuk memahami perbedaannya.
Referensi Urutan Escape
Tabel di bawah ini mencantumkan urutan escape umum dan apakah urutan tersebut didukung dalam JavaScript, Python, dan JSON. Ketiga bahasa berbagi set inti yang sama (baris baru, tab, backslash, tanda kutip ganda), tetapi berbeda dalam tanda kutip tunggal, hex escape, dan notasi Unicode yang diperluas.
Urutan
Arti
JavaScript
Python
JSON
\n
Newline (LF)
Yes
Yes
Yes
\r
Carriage return
Yes
Yes
Yes
\t
Tab
Yes
Yes
Yes
\\
Backslash
Yes
Yes
Yes
\"
Double quote
Yes
Yes
Yes
\'
Single quote
Yes
Yes
No
\b
Backspace
Yes
Yes
Yes
\f
Form feed
Yes
Yes
Yes
\v
Vertical tab
Yes
Yes
No
\0
Null character
Yes
Yes
No
\xNN
Hex byte
Yes
Yes
No
\uNNNN
Unicode (BMP)
Yes
Yes
Yes
\u{N..}
Unicode (full)
Yes
No
No
Perbandingan Escaping JavaScript vs Python vs JSON
Meskipun ketiga format ini berbagi sintaks berbasis backslash yang sama, mereka berbeda dalam urutan mana yang valid dan cara menangani kasus tepi. Memilih mode yang salah menghasilkan output yang tampak benar tetapi gagal saat di-parse.
JavaScript
Mendukung hex escape \x, \u{...} untuk rentang Unicode penuh (di luar BMP), \v untuk vertical tab, dan \0 untuk null. Tanda kutip tunggal maupun ganda dapat di-escape. Template literal (backtick) menghindari sebagian besar kebutuhan escaping.
Python
Urutan inti yang sama dengan JavaScript, ditambah hex escape \x dan \N{name} untuk karakter Unicode bernama. Raw string (r"...") menonaktifkan pemrosesan escape sepenuhnya. Tanda kutip tunggal dan ganda keduanya dapat di-escape.
JSON
Format yang paling ketat. Hanya \" (tanda kutip ganda), \\, \/, \n, \r, \t, \b, \f, dan \uNNNN yang valid. Tidak ada escape tanda kutip tunggal (string JSON selalu menggunakan tanda kutip ganda). Tidak ada hex escape, tidak ada \v, tidak ada \0. Setiap karakter kontrol (U+0000 hingga U+001F) harus menggunakan notasi \uNNNN.
Contoh Kode
Contoh untuk melakukan escape dan unescape string dalam JavaScript, Python, Go, dan command line.
JavaScript
// Escape a string with special characters
const raw = 'Line 1\nLine 2\tTabbed "quoted"';
const escaped = JSON.stringify(raw);
// → '"Line 1\\nLine 2\\tTabbed \\"quoted\\""'
// Unescape a JSON string value
const input = '"Hello\\nWorld"';
const unescaped = JSON.parse(input);
// → "Hello\nWorld" (actual newline character)
// Template literals don't need quote escaping
const tpl = `She said "hello"`;
// → 'She said "hello"' — no backslashes needed
// Escape for use inside a RegExp
const query = 'price: $5.00 (USD)';
const safe = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
// → "price: \\$5\\.00 \\(USD\\)"
Python
# Escape with repr() — shows escape sequences
raw = "Line 1\nLine 2\t'quoted'"
print(repr(raw))
# → "Line 1\nLine 2\t'quoted'"
# Raw strings skip escape processing
path = r"C:\Users\name\Documents"
print(path)
# → C:\Users\name\Documents (backslashes kept literal)
# JSON escaping with json module
import json
data = 'He said "hello\nworld"'
escaped = json.dumps(data)
# → '"He said \\"hello\\nworld\\""'
# Unicode escaping
text = "Caf\u00e9" # → "Café"
print(text.encode('unicode_escape').decode())
# → "Caf\\xe9"
# Use $'...' syntax for escape sequences in bash
echo $'Line 1\nLine 2\tTabbed'
# → Line 1
# Line 2 Tabbed
# printf interprets escape sequences
printf 'Path: C:\\Users\\name\n'
# → Path: C:\Users\name
# Use jq to escape a string for JSON
echo 'He said "hello"' | jq -Rs .
# → "He said \"hello\"\n"
# Unescape JSON string with jq
echo '"Line 1\\nLine 2"' | jq -r .
# → Line 1
# Line 2
Pertanyaan yang Sering Diajukan
Apa perbedaan antara escaping dan encoding?
Escaping menambahkan backslash sebelum karakter khusus dalam literal string agar parser bahasa memperlakukannya sebagai data, bukan sintaks. Encoding mengubah seluruh string menjadi representasi yang berbeda — misalnya, Base64 encoding mengonversi biner ke teks ASCII, dan URL encoding mengganti karakter tidak aman dengan urutan persen-hex. Escaping mempertahankan keterbacaan; encoding mengubah format sepenuhnya.
Mengapa string saya memiliki backslash ganda (\\\\) alih-alih tunggal?
Backslash ganda muncul ketika string di-escape dua kali. Ini sering terjadi ketika data melewati beberapa lapisan serialisasi — misalnya, nilai JSON yang disimpan di dalam string JSON lain, atau baris log yang di-encode JSON sebelum ditulis ke file. Untuk memperbaikinya, lakukan unescape pada string satu lapisan dalam satu waktu hingga Anda mencapai konten aslinya.
Bagaimana cara melakukan escape string untuk JSON dalam JavaScript?
Gunakan JSON.stringify(). Fungsi ini membungkus string dalam tanda kutip ganda dan melakukan escape semua karakter yang diperlukan JSON: backslash, tanda kutip ganda, baris baru, tab, dan karakter kontrol di bawah U+0020. Jika Anda hanya menginginkan konten dalam tanpa tanda kutip di sekitarnya, gunakan JSON.stringify(str).slice(1, -1).
Bisakah string JSON mengandung tanda kutip tunggal?
Tidak. Spesifikasi JSON (RFC 8259) mengharuskan semua string dibatasi oleh tanda kutip ganda. Tanda kutip tunggal bukan pembatas string yang valid dalam JSON. Meskipun beberapa parser yang lebih toleran menerimanya, parser JSON yang sesuai standar akan menolak string yang dibungkus tanda kutip tunggal. Jika string Anda mengandung karakter tanda kutip tunggal, karakter tersebut dapat muncul apa adanya di dalam JSON berkutip ganda — tidak perlu di-escape.
Apa itu raw string dalam Python?
Raw string (diawali dengan r, seperti r"C:\Users\name") memberi tahu interpreter Python untuk memperlakukan backslash sebagai karakter literal alih-alih penanda escape. Ini berguna untuk path file Windows, ekspresi reguler, dan string apa pun di mana backslash harus dipertahankan. Perlu diperhatikan bahwa raw string tidak dapat diakhiri dengan jumlah backslash yang ganjil, karena backslash di akhir akan melakukan escape pada kutipan penutup.
Bagaimana cara melakukan escape karakter Unicode dalam JavaScript?
JavaScript mendukung dua bentuk Unicode escape. Sintaks \uNNNN menangani karakter dalam Basic Multilingual Plane (U+0000 hingga U+FFFF), seperti \u00e9 untuk 'e dengan aksen akut'. Untuk karakter di luar BMP (emoji, skrip langka), gunakan \u{NNNNN} dengan hingga enam digit hex — misalnya, \u{1F600} untuk emoji wajah tersenyum. Bentuk \u{'} diperkenalkan dalam ES2015.
Apakah string escaping terkait dengan keamanan (XSS, SQL injection)?
Escaping tingkat bahasa dan escaping keamanan memiliki tujuan yang berbeda, tetapi idenya sama: mencegah karakter khusus diinterpretasikan sebagai kode. Untuk pencegahan XSS, Anda melakukan escape entitas HTML (<, >, &). Untuk SQL injection, Anda menggunakan parameterized query alih-alih escaping manual. Alat ini menangani escaping string tingkat bahasa (urutan backslash), bukan escaping HTML atau SQL.