Wie entferne ich Steuerzeichen aus einer Zeichenfolge?
Lesezeit: 3 Minuten
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
14371500cookie-checkWie entferne ich Steuerzeichen aus einer Zeichenfolge?yes
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.
Nov 4, 2014 at 17:39
Check this topic stackoverflow.com/questions/4374822/…
Nov 4, 2014 at 17:40
use CDATA to wrap such data
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/…
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
Dec 20, 2016 at 19:55