Java - Hogyan lehet eltávolítani az utf8 kódolásra alkalmatlan rossz karaktereket a MySQL Stack Overflow alkalmazásban
Piszkos adataim vannak. Néha ilyen karaktereket tartalmaz. Ezeket az adatokat olyan lekérdezésekhez használom, mint
Erre a karakterre kapok
org.hibernate.exception.GenericJDBCException: Az összeállítások illegális keveréke (utf8_bin, IMPLICIT), (utf8mb4_general_ci, COERCIBLE), (utf8mb4_general_ci, COERCIBLE) az 'IN' művelethez
Hogyan tudom kiszűrni az ilyen karaktereket? Java-t használok.

6 válasz 6
Amikor ilyen problémám adódott, a Perl szkriptet használtam annak biztosítására, hogy az adatokat érvényes UTF-8 formátumba konvertáljuk a következő kód használatával:
Ez a szkript az (esetleg sérült) UTF-8-at veszi át az stdin-re, és az érvényes UTF-8-ot újra kinyomtatja az stdout-ra. Az érvénytelen karaktereket a (z) U helyettesíti (U + FFFD, Unicode helyettesítő karakter).
Ha ezt a szkriptet jó UTF-8 bemeneten futtatja, akkor a kimenetnek meg kell egyeznie a bemenettel.
Ha van adat az adatbázisban, akkor célszerű a DBI használatával beolvasni a tábláit és táblázatait, és ezzel a módszerrel súrolni az összes adatot, hogy megbizonyosodjon arról, hogy minden érvényes UTF-8.
Ez ugyanannak a szkriptnek a Perl egyvonalas változata:
EDIT: Hozzáadott csak Java-megoldást.