Escape og unescape af tekststrenge
Escap eller unescap en tekststreng til JSON, JavaScript, skabelonliteraler, SQL, CSV, HTML-attributter, regulære udtryk og URL'er direkte i din browser.
Escaping er ikke en erstatning for parametriserede forespørgsler (prepared statements). Brug dette output til at læse eller fejlsøge SQL, aldrig til at bygge forespørgsler ud fra brugerinput.
Sådan escaper eller unescaper du en streng
- Vælg målet i Format: JSON-streng, JavaScript-streng, JavaScript-skabelonliteral, SQL-strengliteral, CSV-felt, HTML-attributværdi, regulært udtryk eller URL-komponent.
- Skriv eller indsæt din tekst i inputfeltet.
- Klik på Escape for at gøre almindelig tekst til en sikker literal, eller på Unescape for at gøre en literal til almindelig tekst igen. Resultatet opdateres, mens du skriver, i den retning, du valgte sidst.
- Justér de indstillinger, der vises for formatet: Tilføj omsluttende anførselstegn, Escap tegn uden for ASCII eller Mellemrum som + (formulardata).
- Klik på Kopiér, eller på Brug output som input for at vende handlingen om og tjekke, at det går op.
Antallet af tegn før og efter vises under knapperne. Alt kører i din browser; intet uploades.
Hvad hvert format gør
- JSON-streng: escaper
",\og kontroltegn (\n,\t,\u0000…), præcis somJSON.stringify. Med Escap tegn uden for ASCII bliver hvert tegn over U+007E til\uXXXX(emoji bliver til et surrogatpar som😀). Unescape accepterer teksten med eller uden dens dobbelte anførselstegn og tolererer rå linjeskift. - JavaScript-streng (‘…’): escaper omvendt skråstreg, enkelt anførselstegn, linjeskift og kontroltegn samt U+2028 og U+2029, som får ældre motorer til at fejle. Unescape forstår
\x41,A,\u{1F600}, ældre oktale escapes som\101og linjefortsættelser. - JavaScript-skabelonliteral (`…`): escaper backticks, omvendte skråstreger og
${, så intet udtryk bliver evalueret; linjeskift og tabulatorer forbliver, som de er, da skabelonliteraler tillader dem. - SQL-strengliteral (‘…’): fordobler enkelte anførselstegn (
O'Brien→'O''Brien'), som i standard-SQL. Unescape afviser et anførselstegn, der ikke er fordoblet. Omvendte skråstreger røres ikke: MySQL behandler i standardtilstand også\som escape-tegn, så tjek din databases regler. - CSV-felt (RFC 4180): omslutter feltet med dobbelte anførselstegn og fordobler indre anførselstegn, hvis det indeholder komma, semikolon, tabulator, anførselstegn, linjeskift eller indledende/afsluttende mellemrum. Tilføj omsluttende anførselstegn gennemtvinger anførselstegnene.
- HTML-attributværdi: erstatter
&,<,>,"og'med entiteter, hvilket er sikkert i både attributter med enkelte og dobbelte anførselstegn. Unescape afkoder numeriske referencer og&,<,>,",'og . - Regulært udtryk (literal tekst): escaper
. * + ? ^ $ { } ( ) | [ ] \ /med omvendt skråstreg samt linjeskift og tabulatorer, så mønsteret matcher teksten bogstaveligt. Resultatet er gyldigt med eller uden flagetu. - URL-komponent (procentkodning): virker som
encodeURIComponentog koder alt undtagen bogstaver, cifre og- _ . ! ~ * ' ( )som UTF-8-bytes. Mellemrum som + (formulardata) bruger konventionenapplication/x-www-form-urlencoded.
Escaping er ikke en sikkerhedsgrænse for SQL
Når du vælger SQL, viser værktøjet en påmindelse, og den fortjener at blive gentaget: den rigtige løsning mod SQL-injektion er en parametriseret forespørgsel (prepared statement), hvor værdien sendes adskilt fra SQL-teksten. At escape i hånden er skrøbeligt: det afhænger af databasen, forbindelsens tegnsæt og indstillinger som MySQLs håndtering af omvendt skråstreg. Brug dette output til at læse logfiler, skrive testdata eller fejlsøge en forespørgsel, aldrig til at bygge forespørgsler ud fra brugerinput.
Til CSV advarer værktøjet også, når en værdi begynder med =, +, - eller @: et regneark kan køre den som en formel (CSV-injektion). Anførselstegn forhindrer ikke det; den sædvanlige afhjælpning er at sætte et apostrof eller et mellemrum foran værdien.
Ofte stillede spørgsmål
Hvad er forskellen på en JSON-streng og en JavaScript-streng?
JSON tillader kun dobbelte anførselstegn og et lille sæt escapes (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript accepterer også enkelte anførselstegn, backticks, \x41, \u{…}, \v og \0. Gyldige JSON-escapes er gyldige i JavaScript, men ikke omvendt.
Hvorfor mislykkes unescape med »ugyldig escape-sekvens«?
Teksten indeholder en omvendt skråstreg efterfulgt af noget, formatet ikke tillader, som \u12 med færre end fire hex-cifre eller en enlig omvendt skråstreg til sidst. Fejlmeddelelsen viser den fejlbehæftede sekvens.
Skal CSV have anførselstegn om hvert felt?
Nej. RFC 4180 kræver kun anførselstegn, når feltet indeholder et komma, et dobbelt anførselstegn eller et linjeskift. Værktøjet sætter også anførselstegn om semikolon, tabulatorer og indledende eller afsluttende mellemrum, fordi mange regneark bruger dem som skilletegn eller fjerner dem.
Er escape af HTML-attributter nok til at forhindre XSS?
Det er korrekt for tekst, der står inde i en attributværdi med anførselstegn. Det er ikke nok for attributter, der selv er kode eller webadresser, som onclick eller href="javascript:…"; de kræver validering, ikke kun escaping.
Bliver min tekst sendt til en server?
Nej. Alle konverteringer kører lokalt i din browser, så du trygt kan indsætte konfigurationsværdier eller data, du ikke vil dele.
Relaterede værktøjer
- URL-koder og -afkoder Gratis URL-koder og -afkoder. Procentkod forespørgselsparametre eller hele URL'er, afkod %XX-sekvenser, og behandl + som mellemrum. Kører i din browser.
- HTML-entiteter: kod og afkod Kod specialtegn som HTML-entiteter (navngivne, decimale eller hex) eller afkod enhver entitet med den fulde liste på 2.231 navngivne HTML5-referencer.
- JSON-formatering og -validering Gratis JSON-formatering og -validering, der gør JSON pæn, minificerer og tjekker den i din browser, med syntaksfejl angivet med linje og kolonne.
- Regex-tester Test regulære udtryk i JavaScript live med fremhævede match, indfangende grupper, erstatning og en forklaring i klart sprog af hvert led i mønsteret.