Ich glaube, Sie missverstehen, was "UTF-8 Zeichen" bedeutet. UTF-8 ist eine Kodierung von Unicode, die ziemlich genau jedes einzelne Zeichen und jede Glyphe repräsentieren kann, die jemals in der aufgezeichneten menschlichen Geschichte existierten, so dass es im Umfang keine "ungültigen" UTF-8-Zeichen gibt.
RTF ist ein Formatierungssystem, das unabhängig vom zugrunde liegenden Codierungssystem funktioniert - Sie können RTF mit ASCII, UTF-8, UTF-16 und anderen verwenden. Textfelder in HTML berücksichtigen nur reinen Text, so dass jede RTF-Formatierung automatisch entfernt wird (es sei denn, Sie verwenden eine "Rich-Edit" -Komponente, von der ich annehme, dass Sie sie nicht sind).
Aber Sie beschreiben Dinge wie Leerzeichen Zeichen (wie Tabs: \t
) sind in Unicode (und so, UTF-8) dargestellt. Ein String, der diese Zeichen enthält, ist immer noch "gültig UTF-8", er ist nur ungültig, soweit es Ihre geschäftlichen Anforderungen betrifft.
Ich schlage vor, Stripping-out nur unerwünschte Zeichen einen regulären Ausdruck verwenden, die nicht sichtbaren Zeichen entspricht (von hier: Match non printable/non ascii characters and remove from text)
textBoxContent = textBoxContent.replace(/[^\x20-\x7E]+/g, '');
Der Ausdruck [^\x20-\x7E]
jedes Zeichen nicht in der Codepoint Bereich 0x20
(32 , ein normales Leerzeichen ' '
) bis 0x7E
(127, das tidel '~'
Zeichen), alle anderen werden entfernt.
Unicode ersten 127 Codepunkte sind identisch mit ASCII und kann hier gesehen werden: http://www.asciitable.com/
kann Hilfe http://stackoverflow.com/questions/20639052/check -if-the-bytes-sequenz-is-valid-utf-8-sequenz-in-javascript –
Sieht aus wie [Der UTF-8-Name des Benutzers in Javascript überprüfen] (http://stackoverflow.com/questions/6381752/ validating-users-utf-8-name-in-javascript) – Abhijit