ToolDeck

Dize Escape

JavaScript, Python ve JSON için dizeleri escape ve unescape edin

Örnek dene

Giriş

Çıkış

Yerel olarak çalışır · Gizli bilgi yapıştırmak güvenlidir
Sonuç burada görünecek…
Mod:

Dize Escape Nedir?

Dize escape, bir dize sabiti içinde özel anlam taşıyan karakterlerin önüne ters eğik çizgi (veya başka bir işaret) ekleme işlemidir. Bir programlama dili ayrıştırıcısı, çift tırnaklı bir dize içinde çift tırnak işaretiyle karşılaştığında bunu dizenin sonu olarak yorumlar. Tırnağın önüne ters eğik çizgi koyarak — \" yerine " kullanmak — ayrıştırıcıya bu karakteri sınırlayıcı değil, gerçek bir karakter olarak ele almasını söyler. Dize sabiti kullanan her dilin escape kuralları vardır; ancak tam diziler dilden dile farklılık gösterir.

En yaygın escape dizileri, kaynak kodda doğrudan görünemeyen boşluk ve kontrol karakterlerini temsil eder. Yeni satır \n, sekme \t, gerçek ters eğik çizgi ise \\ olur. Bu kurallar C programlama dilinden (ISO/IEC 9899) gelmekte olup JavaScript (ECMA-262), Python, Java, Go ve Rust tarafından benimsenmiştir. JSON (RFC 8259) aynı sözdizimini kullanır ancak daha küçük bir dizi kümesini destekler.

Unescape işlemi (bazen "de-escaping" olarak da adlandırılır) bunun tersidir: escape dizilerini özgün karakterlerine geri dönüştürür. Bu işlem log dosyaları okunurken, API yanıtları ayrıştırılırken veya çift escape uygulanmış veriler hata ayıklanırken sık kullanılır. Her iki işlem de elle yapıldığında zahmetli ve hata yapmaya açıktır; bu nedenle geliştiriciler çok satırlı diziler, gömülü tırnaklar veya Unicode karakterlerle çalışırken bir escape/unescape aracına başvurur.

Neden Çevrimiçi Dize Escape Aracı Kullanmalısınız?

Ters eğik çizgileri tek tek eklemek ya da kaldırmak, özellikle iç içe tırnaklar veya çok satırlı girişlerde, hem yorucu hem de hata yapmaya elverişlidir. Tarayıcı tabanlı bir dize escape aracı, REPL açmaya ya da tek kullanımlık betikler yazmaya gerek kalmadan anında sonuç verir.

Anında Dönüştürme
Metninizi yapıştırın ve escape ya da unescape edilmiş sonucu hemen alın. Terminal açmaya, REPL başlatmaya veya tek kullanımlık betik yazmaya gerek yoktur.
🔀
Formatlar Arasında Geçiş
JavaScript, Python ve JSON escape modları arasında geçiş yapın. Her dil tek tırnakları, Unicode'u ve kontrol karakterlerini farklı biçimde ele alır — araç doğru kuralları otomatik olarak uygular.
🔒
Gizliliği Ön Planda Tutan İşlem
Tüm escape ve unescape işlemleri JavaScript kullanılarak tarayıcınızda gerçekleşir. Dizeleriniz hiçbir sunucuya gönderilmez; bu durum API anahtarları, token'lar veya kullanıcı verileriyle çalışırken önem taşır.
📋
Giriş veya Kurulum Gerektirmez
Sayfayı açın ve yapıştırmaya başlayın. Oluşturulacak hesap, kurulacak eklenti ve aracı engelleyecek çerez onay ekranı yoktur.

Dize Escape Kullanım Senaryoları

Ön Yüz Geliştirme
Kullanıcı tarafından oluşturulan içeriği HTML özniteliklerine, satır içi betiklere veya şablon değişmezlerine eklemeden önce escape edin. Kaçışsız tırnak işaretleri veya açı parantezlerinden kaynaklanan bozuk işaretleme ve XSS açıklarını önler.
Arka Uç API Entegrasyonu
Yeni satır, sekme veya tırnak içeren gömülü dizelerle JSON istek gövdeleri oluşturun. Doğru escape işlemi, alıcı API'den 400 hatasına yol açacak hatalı biçimlendirilmiş JSON'ı önler.
DevOps ve Yapılandırma
JSON yapılandırma dosyaları, YAML heredoc'ları veya ortam değişkenleri için escape edilmiş dizeler yazın. Dockerfile ENV veya Kubernetes ConfigMap içindeki yanlış yerleştirilmiş bir ters eğik çizgi dağıtımı bozabilir.
QA ve Test Verisi
Gömülü kontrol karakterleri, Unicode dizileri ve iç içe tırnaklar içeren test dizeleri oluşturun. Bu sınır durum dizeleri, ayrıştırıcıların ve serileştiricilerin özel karakterleri doğru işlediğini doğrulamak için gereklidir.
Veri Mühendisliği
CSV dışa aktarmalarından, log toplayıcılarından veya veritabanı dökümlerinden gelen çift escape uygulanmış verileri temizleyin. Birden fazla serileştirme katmanından geçen alanlar sıklıkla temizlenmesi gereken fazladan ters eğik çizgiler biriktirmiş olur.
Öğrenme ve Hata Ayıklama
Farklı dillerin aynı dizeyi nasıl temsil ettiğini inceleyin. Bir dile yeni başlayan öğrenciler ve geliştiriciler, farkları anlamak için JavaScript, Python ve JSON escape işlemlerini yan yana karşılaştırabilir.

Escape Dizi Referansı

Aşağıdaki tablo, yaygın escape dizilerini ve bunların JavaScript, Python ve JSON'da desteklenip desteklenmediğini listeler. Üç dil de çekirdek seti (yeni satır, sekme, ters eğik çizgi, çift tırnak) paylaşır; ancak tek tırnaklar, hex escape'leri ve genişletilmiş Unicode gösterimi konusunda farklılaşır.

DiziAnlamJavaScriptPythonJSON
\nNewline (LF)YesYesYes
\rCarriage returnYesYesYes
\tTabYesYesYes
\\BackslashYesYesYes
\"Double quoteYesYesYes
\'Single quoteYesYesNo
\bBackspaceYesYesYes
\fForm feedYesYesYes
\vVertical tabYesYesNo
\0Null characterYesYesNo
\xNNHex byteYesYesNo
\uNNNNUnicode (BMP)YesYesYes
\u{N..}Unicode (full)YesNoNo

JavaScript, Python ve JSON Escape Karşılaştırması

Bu üç format aynı ters eğik çizgi tabanlı sözdizimini paylaşsa da hangi dizilerin geçerli olduğu ve sınır durumların nasıl ele alındığı konusunda farklılaşır. Yanlış mod seçildiğinde doğru görünen ancak ayrıştırma sırasında başarısız olan bir çıktı elde edilir.

JavaScript
\x hex escape'lerini, tam Unicode aralığı (BMP ötesi) için \u{...} gösterimini, dikey sekme için \v ve null için \0 destekler. Hem tek hem çift tırnaklar escape edilebilir. Şablon değişmezleri (backtick'ler) çoğu escape ihtiyacını ortadan kaldırır.
Python
JavaScript ile aynı çekirdek dizilere ek olarak \x hex escape'lerini ve adlandırılmış Unicode karakterler için \N{name} gösterimini destekler. Raw string'ler (r"...") escape işlemini tamamen devre dışı bırakır. Hem tek hem çift tırnaklar escape edilebilir.
JSON
En kısıtlayıcı formattır. Yalnızca \" (çift tırnak), \\, \/, \n, \r, \t, \b, \f ve \uNNNN geçerlidir. Tek tırnak escape'i yoktur (JSON dizeleri her zaman çift tırnak kullanır). Hex escape yok, \v yok, \0 yok. U+0000 ile U+001F arasındaki tüm kontrol karakterleri \uNNNN gösterimiyle yazılmalıdır.

Kod Örnekleri

JavaScript, Python, Go ve komut satırında dize escape ve unescape örnekleri.

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"
Go
package main

import (
    "fmt"
    "strconv"
    "encoding/json"
)

func main() {
    // strconv.Quote adds escape sequences and wraps in quotes
    raw := "Line 1\nLine 2\t\"quoted\""
    fmt.Println(strconv.Quote(raw))
    // → "\"Line 1\\nLine 2\\t\\\"quoted\\\"\""

    // strconv.Unquote reverses it
    unescaped, _ := strconv.Unquote(`"hello\nworld"`)
    fmt.Println(unescaped)
    // → hello
    //   world

    // JSON marshal handles escaping automatically
    b, _ := json.Marshal("tabs\there & \"quotes\"")
    fmt.Println(string(b))
    // → "tabs\there \u0026 \"quotes\""
}
CLI (Bash)
# 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

Sıkça Sorulan Sorular

Escape ile kodlama arasındaki fark nedir?
Escape işlemi, dil ayrıştırıcısının sözdizimi yerine veri olarak ele alması için dize sabiti içindeki özel karakterlerin önüne ters eğik çizgi ekler. Kodlama ise tüm dizeyi farklı bir temsile dönüştürür — örneğin Base64 kodlaması ikiliyi ASCII metne çevirir, URL kodlaması güvensiz karakterleri yüzde-hex dizileriyle değiştirir. Escape okunabilirliği korur; kodlama formatı tamamen değiştirir.
Dizimde neden tek yerine çift ters eğik çizgi (\\\\) görünüyor?
Çift ters eğik çizgiler, bir dize iki kez escape edildiğinde görünür. Bu durum, veriler birden fazla serileştirme katmanından geçtiğinde sıkça yaşanır — örneğin başka bir JSON dizesinin içine gömülü bir JSON değeri veya bir dosyaya yazılmadan önce JSON kodlamasından geçirilmiş bir log satırı. Düzeltmek için özgün içeriğe ulaşana dek dizeyi tek seferde bir katman unescape edin.
JavaScript'te bir dizeyi JSON için nasıl escape ederim?
JSON.stringify() kullanın. Dizeyi çift tırnaklar içine alır ve JSON'ın gerektirdiği tüm karakterleri escape eder: ters eğik çizgiler, çift tırnaklar, yeni satırlar, sekmeler ve U+0020 altındaki kontrol karakterleri. Yalnızca çevreleyen tırnaklar olmadan iç içeriği almak için JSON.stringify(str).slice(1, -1) kullanın.
JSON dizeleri tek tırnak içerebilir mi?
Hayır. JSON belirtimi (RFC 8259), tüm dizelerin çift tırnakla sınırlandırılmasını gerektirir. Tek tırnaklar, JSON'da geçerli dize sınırlayıcısı değildir. Bazı toleranslı ayrıştırıcılar bunları kabul etse de herhangi bir standart uyumlu JSON ayrıştırıcısı, tek tırnak içine alınmış bir dizeyi reddeder. Dizeniz tek tırnak karakteri içeriyorsa, bu karakter çift tırnaklı JSON içinde olduğu gibi görünebilir — escape gerekmez.
Python'da raw string nedir?
Raw string (r önekiyle, örneğin r"C:\\Users\\name"), Python yorumlayıcısına ters eğik çizgileri escape işaretçisi yerine gerçek karakter olarak ele almasını söyler. Windows dosya yolları, düzenli ifadeler ve ters eğik çizgilerin korunması gereken her dize için kullanışlıdır. Raw string'in tek sayıda ters eğik çizgiyle bitemeyeceğini unutmayın; çünkü sondaki ters eğik çizgi kapanış tırnağını escape eder.
JavaScript'te Unicode karakterleri nasıl escape ederim?
JavaScript iki Unicode escape biçimini destekler. \uNNNN sözdizimi, Temel Çok Dilli Düzlem'deki karakterleri (U+0000 ile U+FFFF arası) ele alır; örneğin 'aksan e' için \u00e9. BMP dışındaki karakterler için (emoji, nadir yazı sistemleri) altı onaltılık basamağa kadar \u{NNNNN} biçimini kullanın — örneğin gülen yüz emoji için \u{1F600}. \u{'} biçimi ES2015 ile tanıtılmıştır.
Dize escape güvenlikle (XSS, SQL injection) ilişkili midir?
Dil düzeyinde escape ve güvenlik escape'i farklı amaçlara hizmet eder; ancak temel fikir aynıdır: özel karakterlerin kod olarak yorumlanmasını önlemek. XSS koruması için HTML varlıklarını escape edersiniz (<, >, &). SQL injection için manuel escape yerine parametreli sorgular kullanırsınız. Bu araç, HTML veya SQL escape'ini değil, dil düzeyinde dize escape işlemini (ters eğik çizgi dizileri) ele alır.