Ich habe einen Textbereich auf der Website, auf dem der Benutzer etwas schreiben kann. Das Problem tritt auf, wenn Benutzer Text oder etwas, das Nicht-UTF-8-Zeichen enthält, kopieren und an den Server senden.Entfernen Sie Zeichen, die für die UTF-8-Codierung nicht geeignet sind, aus String
Java behandelt es erfolgreich, da es UTF-16 unterstützt, aber meine mySql-Tabelle UTF-8 unterstützt und daher Einfügung fehlschlägt.
Ich habe versucht, einen Weg in Business-Logik selbst zu implementieren, um alle Zeichen zu entfernen, die nicht für UTF-8-Codierung geeignet ist.
Derzeit bin ich mit diesem Code:
new String(java.nio.charset.Charset.forName("UTF-8").encode(myString).array());
Aber es ersetzt Zeichen nicht geeignet für UTF-8 mit einigen anderen unverständlichen Zeichen. Was für Endverbraucher auch nicht gut aussieht. Könnte jemand bitte etwas Licht über eine mögliche Lösung werfen, um dies mit Java-Code anzugehen?
EDIT: Zum Beispiel Ausnahme habe ich während Einfügung solcher Werte
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A\x0D\x0A...' for column
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xF0\x9F...' for column
Können Sie ein Beispiel für eine geben Zeichen, mit dem Sie ein Problem haben? UTF-8 und UTF-16 sind * Kodierungen * für den genau gleichen Zeichenbereich. Es sollte also nicht darauf ankommen, welche Kodierung von Ihrer Datenbank unterstützt wird. –
@ErwinBolwidt Entschuldigung, ich habe diese Zeichenfolge nicht, Benutzer versucht, einzufügen, aber ich habe die Ausnahme hinzugefügt, die ich bei der Einfügung von zwei solcher Zeichenfolgen bekam – Abhi