Poiché MySQL 5.1 non supporta sequenze UTF-8 a 4 byte, ho bisogno di sostituire/eliminare le sequenze a 4 byte in queste stringhe.Come sostituire/rimuovere 4 (+) - caratteri di byte da una stringa UTF-8 in Java?
Sto cercando un modo pulito per sostituire questi caratteri.
Le librerie di Apache stanno sostituendo i caratteri con un punto interrogativo che va bene per questo caso, anche se l'equivalente ASCII sarebbe più bello, ovviamente.
N.B. L'input proviene da fonti esterne (nomi e-mail) e l'aggiornamento del database non è una soluzione in questo momento.
Stai scherzando. MySQL non supporta ancora Unicode in questo giorno ed età? È irragionevole. Far finta di supportare Unicode quando si possono gestire solo sequenze UTF-8 a 1, 2 o 3 byte è altrettanto importante affermare che si supporta Unicode quando si supportano solo sequenze ASCII da 1 byte. O supportate qualsiasi punto di codice Unicode legale o non supportate Unicode. È una cosa binaria. Sembra che MySQL non supporti Unicode. Per favore dimmi che questo è uno scherzo. – tchrist
@tchrist: MySQL 5.5.3 e versioni successive supportano l'UTF-8 tramite il nuovo set di caratteri "utf8mb4" (http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.html) . Tuttavia, il set di caratteri "utf8" "supporta solo caratteri multibyte UTF-8 fino a 3 byte, in modo riferito per evitare problemi di replica tra diverse versioni di MySQL. "utf8" potrebbe trasformarsi in un alias per "utf8mb4" in una futura versione di MySQL. – ninjalj
Simile a [questa domanda] (http://stackoverflow.com/questions/8491431/remove-4-byte-characters-from-a-utf-8-string) tranne che richiede una soluzione in PHP anziché in Java. –