Ho un'area di testo sul sito Web in cui l'utente può scrivere qualsiasi cosa. Il problema si verifica quando la copia utente incolla del testo o qualcosa che contiene caratteri non UTF 8 e li invia al server.Rimuovere caratteri non adatti alla codifica UTF-8 da String
Java lo gestisce correttamente, poiché supporta UTF-16 ma la mia tabella mySql supporta UTF-8 e pertanto l'inserimento non riesce.
Stavo cercando di implementare in qualche modo nella logica di business, per rimuovere tutti i caratteri che non sono adatti per la codifica UTF-8.
Attualmente sto usando questo codice:
new String(java.nio.charset.Charset.forName("UTF-8").encode(myString).array());
Ma sostituisce i caratteri non adatto per UTF-8 con alcuni altri personaggi oscuri. Anche questo non sembra buono per l'utente finale. Qualcuno potrebbe per favore gettare un po 'di luce su ogni possibile soluzione per affrontare questo utilizzando il codice Java?
EDIT: Ad esempio, un'eccezione I ottenuto durante l'inserimento di tali valori
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
Può fare un esempio di un personaggio con cui hai un problema? UTF-8 e UTF-16 sono * codifiche * per lo stesso identico intervallo di caratteri, quindi non dovrebbe importare quale codifica sia supportata dal database. –
@ErwinBolwidt Scusa, non ho quella stringa, l'utente ha provato ad inserire ma ho aggiunto l'eccezione che ho ottenuto con l'inserimento di due di tali stringhe – Abhi