Escapowanie i unescape tekstu
Escapuj lub odescapuj tekst dla JSON, JavaScriptu, literałów szablonowych, SQL, CSV, atrybutów HTML, wyrażeń regularnych i adresów URL w przeglądarce.
Escapowanie nie zastępuje zapytań parametryzowanych (prepared statements). Używaj tego wyniku do czytania lub debugowania SQL, nigdy do budowania zapytań z danych od użytkownika.
Jak escapować lub odescapować tekst
- Wybierz cel w polu Format: ciąg JSON, ciąg JavaScript, literał szablonowy JavaScript, literał tekstowy SQL, pole CSV, wartość atrybutu HTML, wyrażenie regularne albo składnik URL.
- Wpisz lub wklej tekst w polu wejściowym.
- Kliknij Escapuj, aby zamienić zwykły tekst w bezpieczny literał, albo Unescape, aby zamienić literał z powrotem w zwykły tekst. Wynik aktualizuje się podczas pisania, w ostatnio wybranym kierunku.
- Dostosuj opcje wyświetlane dla danego formatu: Dodaj otaczające cudzysłowy, Escapuj znaki spoza ASCII lub Spacje jako + (dane formularza).
- Kliknij Kopiuj albo Użyj wyniku jako danych wejściowych, aby odwrócić operację i sprawdzić, czy tekst wraca do postaci wyjściowej.
Pod przyciskami widać liczbę znaków przed i po. Wszystko działa w twojej przeglądarce; nic nie jest przesyłane.
Co robi każdy format
- Ciąg JSON: escapuje
",\i znaki sterujące (\n,\t,\u0000…), dokładnie jakJSON.stringify. Z opcją Escapuj znaki spoza ASCII każdy znak powyżej U+007E staje się\uXXXX– polskie „ą” toą, a emoji stają się parą surogatów, np.😀. Unescape przyjmuje tekst z otaczającymi cudzysłowami lub bez nich i toleruje surowe końce linii. - Ciąg JavaScript (‘…’): escapuje ukośnik wsteczny, apostrof, końce linii i znaki sterujące, a także U+2028 i U+2029, które psują starsze silniki. Unescape rozumie
\x41,A,\u{1F600}, dawne sekwencje ósemkowe, np.\101, oraz kontynuacje linii. - Literał szablonowy JavaScript (`…`): escapuje grawisy, ukośniki wsteczne i
${, aby żadne wyrażenie nie zostało wykonane; końce linii i tabulatory zostają bez zmian, bo literały szablonowe na nie pozwalają. - Literał tekstowy SQL (‘…’): podwaja apostrofy (
O'Brien→'O''Brien'), jak w standardowym SQL. Unescape odrzuca apostrof, który nie jest podwojony. Ukośniki wsteczne zostają nietknięte: MySQL w domyślnym trybie też traktuje\jako znak ucieczki, więc sprawdź zasady swojej bazy. - Pole CSV (RFC 4180): otacza pole cudzysłowami i podwaja cudzysłowy wewnątrz, gdy zawiera ono przecinek, średnik, tabulator, cudzysłów, koniec linii lub spację na początku albo końcu. Dodaj otaczające cudzysłowy wymusza cudzysłowy.
- Wartość atrybutu HTML: zamienia
&,<,>,"i'na encje, co jest bezpieczne w atrybutach zarówno w apostrofach, jak i w cudzysłowach. Unescape dekoduje odwołania numeryczne oraz&,<,>,",'i . - Wyrażenie regularne (dosłowny tekst): poprzedza ukośnikiem
. * + ? ^ $ { } ( ) | [ ] \ /oraz końce linii i tabulatory, aby wzorzec dopasował tekst dosłownie. Wynik jest poprawny z flagąui bez niej. - Składnik URL (percent-encoding): działa jak
encodeURIComponent, kodując jako bajty UTF-8 wszystko oprócz liter, cyfr i- _ . ! ~ * ' ( ). Spacje jako + (dane formularza) stosuje konwencjęapplication/x-www-form-urlencoded.
Escapowanie nie jest zabezpieczeniem SQL
Po wybraniu SQL narzędzie wyświetla przypomnienie i warto je powtórzyć: prawdziwym rozwiązaniem problemu SQL injection jest zapytanie parametryzowane (prepared statement), w którym wartość jest wysyłana osobno od tekstu SQL. Ręczne escapowanie jest kruche: zależy od bazy danych, zestawu znaków połączenia i ustawień, takich jak obsługa ukośnika wstecznego w MySQL. Używaj tego wyniku do czytania logów, pisania danych testowych czy debugowania zapytań, nigdy do budowania zapytań z danych od użytkownika.
W przypadku CSV narzędzie ostrzega też, gdy wartość zaczyna się od =, +, - lub @: arkusz kalkulacyjny może wykonać ją jako formułę (CSV injection). Cudzysłowy temu nie zapobiegają; typowym zabezpieczeniem jest poprzedzenie wartości apostrofem lub spacją.
Najczęściej zadawane pytania
Czym różni się ciąg JSON od ciągu JavaScript?
JSON dopuszcza tylko cudzysłowy podwójne i niewielki zestaw sekwencji (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript akceptuje też apostrofy, grawisy, \x41, \u{…}, \v i \0. Poprawne sekwencje JSON są poprawne w JavaScripcie, ale nie odwrotnie.
Dlaczego unescape kończy się błędem niepoprawnej sekwencji ucieczki?
Tekst zawiera ukośnik wsteczny, po którym stoi coś, na co format nie pozwala, np. \u12 z mniej niż czterema cyframi szesnastkowymi albo samotny ukośnik na końcu. Komunikat błędu pokazuje wadliwą sekwencję.
Czy w CSV każde pole musi być w cudzysłowie?
Nie. RFC 4180 wymaga cudzysłowów tylko wtedy, gdy pole zawiera przecinek, cudzysłów lub koniec linii. To narzędzie ujmuje w cudzysłowy także pola ze średnikami, tabulatorami i spacjami na początku lub końcu, bo wiele arkuszy – w tym polski Excel – używa ich jako separatorów albo je obcina.
Czy escapowanie atrybutu HTML wystarczy, by zapobiec XSS?
Jest poprawne dla tekstu umieszczanego w wartości atrybutu w cudzysłowie. Nie wystarcza dla atrybutów, które same są kodem lub adresem URL, np. onclick czy href="javascript:…"; te wymagają walidacji, a nie tylko escapowania.
Czy mój tekst jest wysyłany na serwer?
Nie. Wszystkie konwersje działają lokalnie w twojej przeglądarce, więc możesz bezpiecznie wklejać wartości konfiguracyjne czy dane, których nie chcesz nikomu udostępniać.
Podobne narzędzia
- Koder i dekoder URL Darmowy koder i dekoder URL. Koduj procentowo parametry zapytań lub całe adresy, dekoduj sekwencje %XX i obsługuj + jako spację. Działa w przeglądarce.
- Koder i dekoder encji HTML Zamieniaj znaki specjalne na encje HTML (nazwane, dziesiętne lub hex) albo dekoduj dowolne encje z pełną listą 2231 nazwanych odwołań HTML5.
- Formatowanie i walidacja JSON Darmowe narzędzie do formatowania i walidacji JSON: upiększa, minifikuje i sprawdza JSON w przeglądarce, wskazując wiersz i kolumnę błędu.
- Tester wyrażeń regularnych Testuj wyrażenia regularne JavaScript na żywo z podświetlaniem dopasowań, grupami przechwytującymi, zamianą tekstu i objaśnieniem każdego elementu wzorca.