Wie entferne ich Steuerzeichen aus einer Zeichenfolge?

Lesezeit: 3 Minuten

Benutzeravatar von user606521
Benutzer606521

Ich habe ein Formular auf meiner Seite, wo der Benutzer Text eingeben und absenden kann. Der Text wird dann an den Server gesendet (REST-API über node.js) und in der DB (postgres) gespeichert.

Das Problem ist, dass gelegentlich einige seltsame Zeichen (Steuerzeichen) in der DB gespeichert werden – zum Beispiel Escape-Steuerzeichen (^[) or backspace control character (^H). Generally it does not break anything since those characters are invisible, so html is rendered correctly. However when I provide xml content for RSS readers, they (readers) return “Malformed XML” because of those control characters (it works after deleting them).

My question is how I can remove those characters from a string on client level (javascript) or server level (javascript/node.js)?

  • by… just doing that? Take the string, use the string replace function to replace any illegal character (or character range) with ”, and then save that instead.

    – Mike ‘Pomax’ Kamermans

    Nov 4, 2014 at 17:39


  • Check this topic stackoverflow.com/questions/4374822/…

    – Asik

    Nov 4, 2014 at 17:40

  • use CDATA to wrap such data

    – Vasiliy Vanchuk

    Nov 4, 2014 at 17:42

  • I don’t think this covers all possible characters that would break things. For example 0x200B is a silent killer – see here stackoverflow.com/questions/12719859/…

    – mike nelson

    Dec 20, 2016 at 19:53

  • Here is a list of all space characters that could be replaced by a normal space cs.tut.fi/~jkorpela/chars/spaces.html and also notes the two invisible space chars that should be removed

    – mike nelson

    Dec 20, 2016 at 19:55

Control characters in Unicode are at codepoints U+0000 through U+001F and U+007F through U+009F. Use a RegExp to find those control characters and replace them with an empty string:

str.replace(/[\u0000-\u001F\u007F-\u009F]/g, "")

Wenn Sie weitere Zeichen entfernen möchten, fügen Sie die Zeichen zu hinzu Charakter Klasse innerhalb der RegExp. Um beispielsweise auch U+200B ZERO WIDTH SPACE zu entfernen, fügen Sie hinzu \u200B Vor dem ].

  • das ist ein ‘Heilmittel’ alias ‘Medizin’ – wie wäre es mit ‘Vorbeugung’?

    – Bekim Bacaj

    28. Januar 2021 um 2:44 Uhr


  • @BekimBacaj Bitte teilen Sie dies Leuten mit, die beispielsweise Texte aus Microsoft Word kopieren und einfügen 🙂

    – iwanuschka

    1. Juli 2021 um 13:37 Uhr

  • Ich habe festgestellt, dass iOS ein Problem mit der automatischen Vervollständigung hat right-to-left mark Eingefügtes Unicode-Zeichen für mehrsprachige Benutzer Hexcode > 0x200F HTML-Code > ‏

    – Mrd

    27. November um 11:02 Uhr

  • Ich habe versucht, etwas umfassender zu sein, indem ich Folgendes verwendet habe: str.replace(/[\u0000-\u001F\u007F-\u009F\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g, "");

    – Mrd

    27. November um 11:49 Uhr


Ich hatte das ähnliche Problem, hier ist die Lösung, die ich wähle.

Ich habe die Zeichenfolgendaten vom Benutzer mit encodeURIComponent(variable_Name) codiert und dann gespeichert, während ich mit decodeURIComponent(variable_Name) decodiert angezeigt habe.

  • Das funktioniert nicht, weil encodeURI.. codiert nur Steuerzeichen und decodeURI.. entschlüsselt sie zurück

    – Benutzer606521

    5. November 2014 um 9:40 Uhr

  • Vielen Dank für Ihren Kommentar und können Sie bitte erklären, warum das Codieren und Decodieren nicht funktioniert?

    – Mateen

    6. November 2014 um 19:34 Uhr

  • Weil es nur unsichtbare Zeichen KODIERT und sie dann wieder DEKODIERT, sodass sich eigentlich nichts ändert – ich werde diese unsichtbaren Zeichen in meinem Inhalt haben – und ich möchte sie aus dem Inhalt ENTFERNEN …

    – Benutzer606521

    7. November 2014 um 9:32 Uhr

  • kein Typ, die encodeuricomponent-Methode codiert fast alle Symbole in ihren HTML-äquivalenten Code, wie zum Beispiel var uri = “@#$%^&*()_+-={}[]\|:;’<>?,./”; var res = encodeURIComponent(uri); Ausgaben: %40%23%24%25%5E%26*()_%2B-%3D%7B%7D%5B %5D%7C%3A%3B’%3C%3E%3F%2C.%2F, sodass die Sonderzeichen nach der Codierung kein Problem darstellen und wir den tatsächlichen Wert nach der Decodierung sehen können.

    – Mateen

    7. November 2014 um 17:35 Uhr


  • Aber ich möchte diese Zeichen entfernen, nicht codieren (ich möchte keine “Escape” – oder “Backspace” -Zeichen in beispielsweise der Beschreibung eines Blogposts). Und ich kann keine codierten Inhalte für RSS-Feeds bereitstellen, da ich dort etwas HTML habe und encodeURIComponent codiert es und ich sehe HTML-Tags im RSS-Feed.

    – Benutzer606521

    9. November 2014 um 9:56 Uhr

1437150cookie-checkWie entferne ich Steuerzeichen aus einer Zeichenfolge?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy