In meiner Datenbank bekomme ich den Fehler
%Vor%Ich benutze Java und MySQL 5. Wie ich weiß, 4-Byte-Unicode ist legal i Java, aber illegal in MySQL 5, denke ich, dass es mein Problem verursachen kann und ich möchte den Typ meiner Daten überprüfen, also hier ist meine Frage : Wie kann ich überprüfen, dass meine UTF-8-Daten 3-Byte- oder 4-Byte-Unicode sind?
UTF-8 codiert alles in der mehrsprachigen Grundebene (dh U + 0000 bis U + FFFF inklusive) in 1-3 Bytes. Daher müssen Sie nur überprüfen, ob alles in Ihrer Zeichenfolge in der BMP ist.
In Java bedeutet dies, dass überprüft wird, ob char
(eine UTF-16-Codeeinheit) ein hohes oder niedriges Ersatzzeichen ist, da Java Ersatzzeichenpaare verwendet, um Nicht-BMP-Zeichen zu codieren:
Wenn Sie BMP nicht unterstützen möchten, können Sie diese Zeichen einfach entfernen, bevor Sie sie an MySQL übergeben:
%Vor% Wenn Sie über BMP hinaus unterstützen möchten, brauchen Sie MySQL 5.5+ und Sie müssen alles ändern, das utf8
ist
zu utf8mb4
(Kollatierungen, Zeichensätze ...). Aber Sie brauchen auch die Unterstützung dafür in dem Treiber, der ich bin
nicht vertraut mit. Die Handhabung dieser Zeichen in Java ist ebenfalls ein Problem, da sie auf 2% verteilt sind. Co_de%
und benötigen daher spezielle Handhabung in vielen Operationen.
Tags und Links java mysql character-encoding utf-8 unicode