Utilia

String escapen/unescapen

Escape of unescape een string voor JSON, JavaScript, template literals, SQL, CSV, HTML-attributen, reguliere expressies en URL’s, direct in je browser.

Zo escape of unescape je een string

  1. Kies het doel bij Formaat: JSON-string, JavaScript-string, JavaScript-template literal, SQL-stringliteral, CSV-veld, waarde van een HTML-attribuut, reguliere expressie of URL-component.
  2. Typ of plak je tekst in het invoerveld.
  3. Klik op Escapen om gewone tekst om te zetten in een veilige literal, of op Unescapen om een literal weer om te zetten in gewone tekst. Het resultaat wordt bijgewerkt terwijl je typt, in de richting die je het laatst hebt gekozen.
  4. Pas de opties aan die bij het formaat horen: Aanhalingstekens eromheen zetten, Niet-ASCII-tekens escapen of Spaties als + (formuliergegevens).
  5. Klik op Kopiëren, of op Resultaat als invoer gebruiken om de bewerking om te keren en de heen-en-terugconversie te controleren.

Het aantal tekens vóór en na staat onder de knoppen. Alles draait in je browser; er wordt niets geüpload.

Wat elk formaat doet

  • JSON-string: escapet ", \ en besturingstekens (\n, \t, \u0000…), precies zoals JSON.stringify. Met Niet-ASCII-tekens escapen wordt elk teken boven U+007E \uXXXX (emoji worden een surrogaatpaar zoals 😀). Unescapen accepteert de tekst met of zonder dubbele aanhalingstekens en verdraagt echte regeleinden.
  • JavaScript-string (‘…’): escapet de backslash, het enkele aanhalingsteken, regeleinden en besturingstekens, en ook U+2028 en U+2029, die oudere engines laten struikelen. Unescapen begrijpt \x41, A, \u{1F600}, oude octale escapes zoals \101 en regelvoortzettingen.
  • JavaScript-template literal (`…`): escapet backticks, backslashes en ${, zodat er geen expressie wordt uitgevoerd; regeleinden en tabs blijven staan, want template literals staan die toe.
  • SQL-stringliteral (‘…’): verdubbelt enkele aanhalingstekens (O'Brien → 'O''Brien'), zoals in standaard-SQL. Unescapen weigert een aanhalingsteken dat niet verdubbeld is. Backslashes blijven ongemoeid: MySQL behandelt \ in de standaardmodus ook als escapeteken, dus controleer de regels van je database.
  • CSV-veld (RFC 4180): zet het veld tussen dubbele aanhalingstekens en verdubbelt aanhalingstekens erbinnen als het een komma, puntkomma, tab, aanhalingsteken, regeleinde of spatie aan het begin of einde bevat. Aanhalingstekens eromheen zetten dwingt de aanhalingstekens af.
  • Waarde van een HTML-attribuut: vervangt &, <, >, " en ' door entiteiten, wat veilig is in attributen met zowel enkele als dubbele aanhalingstekens. Unescapen decodeert numerieke verwijzingen en &amp;, &lt;, &gt;, &quot;, &apos; en &nbsp;.
  • Reguliere expressie (letterlijke tekst): zet een backslash voor . * + ? ^ $ { } ( ) | [ ] \ /, en ook voor regeleinden en tabs, zodat het patroon de tekst letterlijk matcht. Het resultaat is geldig met en zonder de flag u.
  • URL-component (procentcodering): werkt zoals encodeURIComponent en codeert alles behalve letters, cijfers en - _ . ! ~ * ' ( ) als UTF-8-bytes. Spaties als + (formuliergegevens) volgt de conventie van application/x-www-form-urlencoded.

Escapen is geen beveiliging tegen SQL-injectie

Kies je SQL, dan toont de tool een herinnering, en die is het herhalen waard: de echte oplossing voor SQL-injectie is een geparametriseerde query (prepared statement), waarbij de waarde los van de SQL-tekst wordt verstuurd. Met de hand escapen is kwetsbaar: het hangt af van de database, de tekenset van de verbinding en instellingen zoals de manier waarop MySQL met backslashes omgaat. Gebruik deze uitvoer om logs te lezen, testdata te schrijven of een query te debuggen, nooit om query’s te bouwen met invoer van gebruikers.

Bij CSV waarschuwt de tool ook als een waarde begint met =, +, - of @: een spreadsheet kan die als formule uitvoeren (CSV-injectie). Aanhalingstekens voorkomen dat niet; de gebruikelijke oplossing is de waarde te laten voorafgaan door een apostrof of een spatie.

Veelgestelde vragen

Wat is het verschil tussen een JSON-string en een JavaScript-string?

JSON staat alleen dubbele aanhalingstekens en een kleine set escapes toe (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript accepteert ook enkele aanhalingstekens, backticks, \x41, \u{…}, \v en \0. Geldige JSON-escapes zijn geldig JavaScript, maar niet andersom.

Waarom mislukt unescapen met “ongeldige escapereeks”?

De tekst bevat een backslash gevolgd door iets wat het formaat niet toestaat, zoals \u12 met minder dan vier hexcijfers, of een losse backslash aan het einde. De foutmelding toont de foute reeks.

Moet elk CSV-veld tussen aanhalingstekens?

Nee. RFC 4180 vereist alleen aanhalingstekens als het veld een komma, een dubbel aanhalingsteken of een regeleinde bevat. Deze tool zet ook velden met puntkomma’s, tabs en spaties aan het begin of einde tussen aanhalingstekens, omdat veel spreadsheets die als scheidingsteken gebruiken (zoals Excel met Nederlandse instellingen de puntkomma) of wegknippen.

Is escapen voor HTML-attributen genoeg tegen XSS?

Het is correct voor tekst binnen een attribuutwaarde tussen aanhalingstekens. Het is niet genoeg voor attributen die zelf code of URL’s zijn, zoals onclick of href="javascript:…"; die vragen om validatie, niet alleen om escapen.

Wordt mijn tekst naar een server gestuurd?

Nee. Alle omzettingen gebeuren lokaal in je browser, dus je kunt gerust configuratiewaarden of gegevens plakken die je liever niet deelt.